在xpath中为什么我可以使用大于号符号>但不低于<

时间:2010-06-13 13:48:54

标签: xml xslt xpath syntax

使用c#3编译变换以下似乎工作得很好......

<xsl:choose>
    <xsl:when test="$valA > $valB">
        <xsl:value-of select="$maxUnder" />
    </xsl:when>
    <xsl:when test="$valA &lt; $valC">
        <xsl:value-of select="$maxOver" />
    </xsl:when>
</xsl:choose>

但是,如果我敢用<代替&lt;,则会出错:

<xsl:choose>
    <xsl:when test="$valA > $valB">
        <xsl:value-of select="$maxUnder" />
    </xsl:when>
    <xsl:when test="$valA < $valC">
        <xsl:value-of select="$maxOver" />
    </xsl:when>
</xsl:choose>
  

System.Xml.XmlException:'&lt;',   十六进制值0x3C,无效   属性字符。

那么为什么>可以,而不是<

1 个答案:

答案 0 :(得分:15)

因为>不是XML中的保留字符,但<是。

来自section 2.4 of the XML 1.0 spec (5th edition)

  

&符号(&)和   不得出现左尖括号(<)   在他们的字面形式,除了   用作标记分隔符,或用作标记分隔符   评论,处理指令或   CDATA部分。如果需要它们   在其他地方,他们必须逃脱使用   数字字符引用或   字符串“&amp;”和“&lt;”   分别。直角支架   (>)可以使用。来表示   字符串“&gt;”,并且必须为   兼容性,使用其中一个进行转义   “&gt;”或字符引用时   它出现在字符串“]]>”中   内容,当该字符串不是   标记CDATA部分的结尾。