我的Xml看起来像:
<Taxes>
<MyTax currency="USD" MyTaxCat="City">0.00000</MyTax>
<MyTax currency="USD" MyTaxCat="County">0.01000</MyTax>
<MyTax currency="USD" MyTaxCat="District">0.00000</MyTax>
<MyTax currency="USD" MyTaxCat="State">0.01000</MyTax>
</Taxes>
我的XSLT:
<MyTaxes>
<xsl:for-each select="Taxes/MyTax">
<Tax>
<xsl:attribute name="TaxCategory">VAT</xsl:attribute>
<xsl:attribute name="TaxName">
<xsl:value-of select="@MyTaxCat" />
</xsl:attribute>
<xsl:attribute name="TaxPerLine">
<xsl:value-of select="/MyTax[@currency='USD']"/>
</xsl:attribute>
</Tax>
</xsl:for-each>
</MyTaxes>
在我的输出中,所有TaxPerLine都设置为0.0000
<MyTaxes>
<Tax TaxCategory="VAT" TaxName="City" TaxPerLine="0.00000" />
<Tax TaxCategory="VAT" TaxName="County" TaxPerLine="0.00000" />
<Tax TaxCategory="VAT" TaxName="District" TaxPerLine="0.00000" />
<Tax TaxCategory="VAT" TaxName="State" TaxPerLine="0.00000" />
</MyTaxes>
知道我在这里做错了什么吗?
谢谢!
答案 0 :(得分:1)
检查此代码我认为您的输出得到
<xsl:decimal-format name="ajeet" decimal-separator="." grouping-separator=","/>
<xsl:template match="/root">
<MyTaxes>
<xsl:for-each select="Taxes/MyTax">
<Tax>
<xsl:attribute name="TaxCategory">VAT</xsl:attribute>
<xsl:attribute name="TaxName">
<xsl:value-of select="@MyTaxCat" />
</xsl:attribute>
<xsl:attribute name="TaxPerLine">
<xsl:value-of select="format-number(current()[@currency='USD'], '0.0000', 'ajeet')"/>
</xsl:attribute>
</Tax>
</xsl:for-each>
</MyTaxes>
答案 1 :(得分:1)
查看/MyTax[@currency='USD']"/>
部分您已经在开头定义了MyTax路径,所以无论如何程序都会忽略您的请求。
您可以为部件定义另一个for-for循环,也可以尝试使用usung current()[@currency='USD']
此外,你不应该以&#34; /&#34;例如:/ MyTax,因为你没有在MyTax之前定义任何根元素。
这给了我正确的输出。好运。