Xml 转换使用前一行中的值,但不应使用
我有一个简单的XML价目表:Xml 转换使用前一行中的值,但不应使用,xml,xslt,Xml,Xslt,我有一个简单的XML价目表: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="example.xsl" type="text/xsl"?> <price-items> <item><name>item 1</name> <price-b2b vat='no'>10</price-b2b><price-b2c vat=
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="example.xsl" type="text/xsl"?>
<price-items>
<item><name>item 1</name> <price-b2b vat='no'>10</price-b2b><price-b2c vat='no'>20</price-b2c></item>
<item><name>item 2</name> <price-b2b vat='yes'>100</price-b2b><price-b2c vat='yes'>200</price-b2c></item>
<item><name>item 3</name> <price-b2b vat='no'>1000</price-b2b><price-b2c vat='no'>2000</price-b2c></item>
</price-items>
在涉及计算的第二行和第三行中,它使用第一行(第一项)中的值进行计算,而不是使用实际行中的相应值
为什么呢?如何更正此问题?当您进行计算时:
<xsl:value-of select="format-number(number(/price-items/item/price-b2b * $vat), '# ###,##')" />
对于其他三种情况也是如此。Wild guess,您使用的是
/price items/item/price-b2b
在开始时删除/
,因为它告诉XSLT从根开始向下移动,因此您失去了回复的foreach
位置naks,我已经重写了它,它可以正常工作。我使用完整路径“/price-items/item/price-b2b”的原因可能是(是的,我尝试了太多版本,以至于丢失了一个ilttel…),因为我只使用了“price-b2b”就得到了NaN。最初,我没有使用数字格式,但如果没有它(“price-b2b*$vat”例如),我也得到了NaN,而仅仅使用“number(price-b2b*$vat)”也没有帮助。。。eelements项的内容始终是一个数字(或一系列易于转换为数字的数字)…无论如何,它现在似乎对我有效,因此再次感谢您的帮助和解释。
b2b excl. VAT: 10 unit(s)
b2b s vat 12,1 unit(s)
b2c excl. VAT: 20 unit(s)
b2c incl. VAT: 24,2 unit(s)
b2b excl. VAT: 8,26 unit(s)
b2b incl. VAT: 100 unit(s)
b2c price excl. VAT: 16,53 unit(s)
b2c price incl. VAT: 200 unit(s)
b2b excl. VAT: 1000 unit(s)
b2b s vat 12,1 unit(s)
b2c excl. VAT: 2000 unit(s)
b2c incl. VAT: 24,2 unit(s)
<xsl:value-of select="format-number(number(/price-items/item/price-b2b * $vat), '# ###,##')" />
<xsl:value-of select="format-number(number(. * $vat), '# ###,##')" />