根据两个属性条件获取Xml值

时间:2017-03-28 07:33:24

标签: xml parsing xslt

我的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>

知道我在这里做错了什么吗?

谢谢!

2 个答案:

答案 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之前定义任何根元素。

这给了我正确的输出。好运。