Представленный образец является упрощенной версией того, что я пытаюсь сделать.
Используя XSLT, как мне сравнить данные из узлов в разных (не-child) xpath?Я хочу сравнить каждый cd/artist
с dvd/director
, чтобы увидеть, совпадают ли они (см. Примеры ниже).Есть несколько CD и DVD, но в этом упрощенном примере я использовал только один из каждого.Я попытался сделать сравнение в пределах одного шаблона, но я не смог получить доступ к dvd xpath.И я не мог получить доступ к dvd xpath с помощью отдельного шаблона.При использовании отдельного шаблона я создал шаблон сравнения, который я назвал (<xsl:call-template name="compare">
).Под доступом я имею в виду, что я не смог распечатать значение dvd / Director.
Мой вопрос: как получить доступ к одному xpath при доступе к другому xpath?То, что я хочу сделать, это сравнить CD Artist с DVD-директором, чтобы увидеть, если они совпадают.И распечатайте эти значения, если они совпадают.Я не могу понять, как найти художника и режиссера, чтобы я мог сравнить их.Мой xslt печатает значение исполнителя компакт-диска, но я не могу распечатать значение dvd / Director.
Мои образцы следующие:
Образцы получены из W3Schools.Я изменил их, чтобы проиллюстрировать мой вопрос.
Образец XSLT
<xsl:for-each select="catalog/cd">
<xsl:value-of select="@artist"/>
<xsl:for-each select="catalog/dvd">
<xsl:if test="@director = @artist">
<xsl:value-of select="@director"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
Образец XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd title="Unchain my heart" artist="Joe Cocker">
<country>USA</country>
<company>EMI</company>
<price>8.20</price>
<year>1987</year>
</cd>
<dvd title="My DVD Movie" director="Joe Cocker">
<country>USA</country>
<company>WB</company>
<price>20.00</price>
<year>1999</year>
</dvd>
</catalog>
Заранее спасибо за помощь.