提供的示例是我正在嘗試做的簡化版本。在XSLT中,如何在訪問不同的XPath時訪問一個XPath?
使用XSLT,我如何比較來自不同(非-child)xpaths中節點的數據?我想比較每個cd/artist
與dvd/director
以查看它們是否匹配(請參閱下面的示例)。有多個CD和DVD,但在這個簡單的例子中,我只使用了每一個。我試圖在一個模板中進行比較,但我無法訪問DVD xpath。我無法使用單獨的模板訪問DVD xpath。當使用單獨的模板時,我創建了一個我稱之爲「比較」模板(<xsl:call-template name="compare">
)。通過訪問,我的意思是我無法打印DVD /導演的價值。
我的問題:如何在訪問不同的xpath時訪問一個xpath?我想要做的是比較光盤藝術家與DVD導演,看看他們是否匹配。並打印出這些值,如果它們匹配。我無法弄清楚的是如何讓藝術家和導演,讓我可以比較它們。我的xslt確實打印了cd的藝術家價值,但我無法打印出dvd /導演的價值。
我的樣本如下:
樣本來自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>
感謝您的幫助提前。
這段代碼是非常錯誤的:沒有任何名稱爲'director'或'artist'的屬性。 –
對不起。固定。 – user1060538