【问题标题】:In xpath why can I use greater-than symbol > but not less-than <在xpath中为什么我可以使用大于符号>但不能小于<
【发布时间】:2011-03-03 05:25:03
【问题描述】:

使用 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>

但是,如果我敢用&amp;lt; 代替&amp;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: '

那么为什么&gt; 可以,而&amp;lt; 不行?

【问题讨论】:

  • FWIW in java 看来我可以“像正常”一样使用...

标签: xml xslt xpath syntax


【解决方案1】:

因为&amp;gt; 不是 XML 中的保留字符,但 &amp;lt; 是。

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

& 字符 (&amp;amp;) 和 不能出现左尖括号 (&amp;lt;) 以他们的字面形式,除非当 用作标记分隔符,或在 评论,处理指令,或 CDATA 部分。如果需要它们 在其他地方,它们必须使用 数字字符引用或 字符串“&amp;amp;”和“&amp;lt;” 分别。右尖括号 (&amp;gt;) 可以使用 字符串“&amp;gt;”,并且必须,对于 兼容性,使用任何一种进行转义 "&amp;gt;" 或字符引用 它出现在字符串“]]&gt;”中 内容,当该字符串不是 标记 CDATA 部分的结束。

【讨论】:

  • [右尖括号 (>) 可以使用字符串 > 表示,并且为了兼容性,必须使用 > 进行转义。或字符引用]这是否意味着即使我可以直接使用它也不应该?干杯。 T
  • @runrunraygun:不。事实上,我一直使用并推荐使用&amp;gt;。这使您的代码比使用&amp;gt; 时更加自然和易于理解
  • 干杯 Dimitre,我正在考虑指示我们所有的代码使用 > 代替 gt;而不是使用 lt;反转语句并使用 > 除非其他考虑因素使该选项不太自然。
  • 另外,您可以使用en.wikipedia.org/wiki/Yoda_conditions 完全消除对 $valC > $valA 在逻辑上是等价的,并且不需要转义操作符。但是,您是否认为1 &gt; foofoo &amp;lt; 1 更易读,这是个人选择的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多