В xpath почему я могу использовать символ больше чем>, но не меньше чем < - PullRequest
6 голосов
/ 13 июня 2010

Используя скомпилированные преобразования 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: '<', шестнадцатеричное значение 0x3C, является недопустимым символом атрибута. </p>

Так почему > нормально, а не<?

1 Ответ

15 голосов
/ 13 июня 2010

Поскольку > не является зарезервированным символом в XML, но < - это.

Из раздела 2.4 спецификации XML 1.0 (5-е издание) :

Символ амперсанда (&) и левая угловая скобка (<) не должна появляться в их буквальном виде, кроме случаев, когда используется в качестве разделителей разметки или в пределах комментарий, инструкция по обработке или раздел CDATA. Если они нужны в другом месте они должны быть экранированы с помощью либо числовые ссылки на символы или строки "&amp;" и "&lt;" соответственно. Правая угловая скобка (>) может быть представлен с использованием строка "&gt;", и должна, для совместимость, можно избежать с помощью любого "&gt;" или ссылка на символ, когда появляется в строке "]]>" в содержание, когда эта строка не маркировка конца раздела CDATA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...