Используя скомпилированный c#3 преобразовывает следующее, кажется, работает просто великолепно...
<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>
Однако, если я смею использовать a <
вместо <
это дает ошибку...
<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>
Система. Xml. XmlException: '<', шестнадцатеричное значение 0x3C, недопустимый символ атрибута.
Итак, почему >
хорошо и нет <
?
Потому что >
не является зарезервированным символом в XML, а <
является.
Из раздела 2.4 спецификации XML 1.0 (5-е издание) :
Символ амперсанда (
&
) и левая угловая скобка (<
) не должна появляться в их буквальном виде, кроме случаев, когда используются в качестве разделителей разметки или внутри комментарий, инструкция по обработке или раздел CDATA. Если они нужны в другом месте их нужно избегать, используя либо числовые ссылки на символы, либо строки «&
» и «<
» соответственно. Правая угловая скобка (>
) можно представить с помощью строка ">
", и обязательно для совместимость, можно избежать с помощью ">
" или ссылка на символ, когда он появляется в строке "]]>
" в содержание, когда эта строка не обозначающий конец раздела CDATA.