2012-01-29 85 views
0

我对XML的样子:XSLT和实体引用

<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

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 
+0

你好Dimitre,谢谢你的回答。我使用Saxon和AntillesXML--可能是那里的问题?在我的XSLT中,我用相同的语法查询其他字段(没有“>”),没有问题。因为我认为问题必须在处理器上。你使用哪个处理器? – 2012-01-29 19:39:30

+0

@datÜlfchen:我发布的结果是用Saxon 6.5.4生成的 – 2012-01-29 20:04:26

+0

确实没有理由说明你的代码不适用。你确定它不是欧元符号编码的问题吗? – 2012-01-29 23:43:10