Доступ к элементам с одинаковым именем для нескольких источников

Я разбираю документ с помощью XSLT. В XSLT я загружаю справочный документ с помощью функции document () и могу получить доступ к элементам из обоих документов. Как исходный документ, так и справочный документ имеют атрибут с именем name. Как сравнить одно с другим. Я обошел это, объявив переменную, но я бы предпочел обойтись без нее, если это возможно. На мой взгляд, мне нужно размещать пространства имен вокруг вещей, но я не знаю, как это сделать.

исходный документ:

<?xml version = "1.0" encoding = "UTF-8"?>
<SoccerMatch revision = "21" id = "2849180" date = "20080405" scheduledStart = "1245" venue = "Emirates Stadium" status = "Result" comment = "" league = "Friendly Match" attendance = "60111">
    <stuffhere>stuff</stuffhere>
    <stuffhere>stuff</stuffhere>
    <stuffhere>stuff</stuffhere>
    <stuffhere>stuff</stuffhere>
    <stuffhere>stuff</stuffhere>
</SoccerMatch>

справочный документ (comp.xml):

<?xml version = "1.0" encoding = "utf-8"?>
<competitions>
    <competition id = "100" league = "Barclays Premier League"/>
    <competition id = "101" league = "The Coca-Cola Football League Championship"/>
    <competition id = "101" league = "The Coca-Cola Football League Championship Play-Offs Semi-Final"/>
    <competition id = "101" league = "The Coca-Cola Football League Championship Play-Offs Final"/>
    <competition id = "102" league = "Coca-Cola Football League One"/>
    <competition id = "102" league = "Coca-Cola Football League One Play-Offs Semi-Final"/>
    <competition id = "102" league = "Coca-Cola Football League One Play-Offs Final"/>
    <competition id = "103" league = "Coca-Cola Football League Two"/>
    <competition id = "103" league = "Coca-Cola Football League Two Play-Offs Semi-Final"/>
    <competition id = "103" league = "Coca-Cola Football League Two Play-Offs Final"/>
    <competition id = "104" league = "Blue Square Premier"/>
    <competition id = "104" league = "Blue Square Premier Play-Offs Semi-Final"/>
    <competition id = "104" league = "Blue Square Premier Final"/>
    <competition id = "105" league = "Nationwide Championship Shield"/>
    <competition id = "120" league = "Clydesdale Bank Premier League"/>
    <competition id = "121" league = "The Irn-Bru Scottish Football League Championship First Division"/>
    <competition id = "121" league = "The Irn-Bru Scottish Football League Championship First Division Play-Offs Semi-Final"/>
    <competition id = "121" league = "The Irn-Bru Scottish Football League Championship First Division Play-Offs Final"/>
    <competition id = "122" league = "The Irn-Bru Scottish Football League Championship Second Division"/>
    <competition id = "122" league = "The Irn-Bru Scottish Football League Championship Second Division Play-Offs Semi-Final"/>
    <competition id = "122" league = "The Irn-Bru Scottish Football League Championship Second Division Play-Offs Final"/>
    <competition id = "123" league = "The Irn-Bru Scottish Football League Championship Third Division"/>
</competitions>

XSLT

<xsl:template match = "/SoccerMatch">
<xmlfeed>
<payload payload_class = "mobile_football_match_details" payload_name = "Payload">
<xsl:variable name = "compId" select = "document('comp.xml')/competitions/competition[@league=@league]/@id" />
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
829
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не вижу атрибута name в вашем xml. Вы имеете в виду "id"? Я не думаю, что здесь можно управлять пространствами имен. См. Обсуждение Кена Холмана по этому поводу здесь.

Я бы согласился с вашим представлением о переменных. Что-то типа:

<xsl:template match = "/SoccerMatch">
 <xsl:variable name = "matchId" select = "@id"/>    
 <xsl:for-each select = "document('competitions.xml')/competitions/competition">
   <xsl:if test = "$matchId = @id">
     <xmlfeed>
      <payload payload_class = "mobile_football_match_details" payload_name = "Payload">
        <!-- add more stuff here-->
      </payload>
     </xmlfeed>
   </xsl:if>
 </xsl:for-each>

Другие вопросы по теме