如果属性currencyID的值应始终具有相同的值,我需要检查<Record>
的每次出现。如果其中一个属性具有不同的值,则应输出&#39; 1&#39;的值。在新元素<Value>
其他&#39; 0&#39;。我的XSLT是这样的:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" version="1.0"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Amount">
<Value>
<xsl:value-of select="if (not((./@currencyID)[1] != ./@currencyID)) then '1' else '0'"/>
</Value>
</xsl:template>
</xsl:stylesheet>
我的xml文件是:
<Data>
<Record>
<Amount currencyID="EUR">1.00</Amount>
<ID>111</ID>
</Record>
<Record>
<Amount currencyID="EUR">2.00</Amount>
<ID>222</ID>
</Record>
<Record>
<Amount currencyID="GBP">3.00</Amount>
<ID>333</ID>
</Record>
</Data>
生成的输出:
<Data>
<Record>
<Value>1</Value>
<ID>111</ID>
</Record>
<Record>
<Value>1</Value>
<ID>222</ID>
</Record>
<Record>
<Value>1</Value>
<ID>333</ID>
</Record>
</Data>
生成的输出是正确的,但是,如果我将第3次出现的currencyID值更改为&#39; EUR&#39;,则生成的值应为&#39; 0&#39;。但是,目前我得到了相同的输出。我的病情有问题吗?
谢谢。
答案 0 :(得分:0)
您可以做的是使用全局变量来检查所有货币是否相同,然后只使用该输出值。
试试这个XSLT
{{1}}