XSLT和实体引用

时间:2012-01-29 19:00:39

标签: xslt

我有xml看起来像:

 <ProductPrice>
        <CurrencySymbol>€</CurrencySymbol>
        <Amount>4.15</Amount>
        <DependsOn>&gt; 500 €</DependsOn>
        <SiteGuid>00000000-0000-0000-0000-000000000000</SiteGuid>
        <Disabled>false</Disabled>
        <SortId>0</SortId>
  </ProductPrice>

我如何处理类似的XSLT?

<xsl:for-each select="./Prices/ProductPrice">
 <xsl:if test="DependsOn = '&gt; 500 €'">
   <xsl:value-of select="Amount"/>
   <xsl:text></xsl:text>
   <xsl:text>
   </xsl:text>
 </xsl:if>
</xsl:for-each>

由于实体引用,if子句无法工作。 有什么解决方案吗?

1 个答案:

答案 0 :(得分:1)

  

由于实体引用,if子句无法工作。任何   解决方案?

没有问题,您的代码按预期工作

此转化

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">
    <xsl:if test="DependsOn = '&gt; 500 €'">
        <xsl:value-of select="Amount"/>
        <xsl:text></xsl:text>
        <xsl:text>    </xsl:text>
    </xsl:if>
 </xsl:template>
</xsl:stylesheet>

应用于提供的XML文档

<ProductPrice>
    <CurrencySymbol>€</CurrencySymbol>
    <Amount>4.15</Amount>
    <DependsOn>&gt; 500 €</DependsOn>
    <SiteGuid>00000000-0000-0000-0000-000000000000</SiteGuid>
    <Disabled>false</Disabled>
    <SortId>0</SortId>
</ProductPrice>

生成想要的正确结果

4.15