Using c#3 compiled transforms the following seems to work just fine...
<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>
However if i dare use a <
in place of <
it gives an error...
<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: '<', hexadecima开发者_开发知识库l value 0x3C, is an invalid attribute character.
So why is >
ok and not <
?
Because >
isn't a reserved character in XML, but <
is.
From section 2.4 of the XML 1.0 spec (5th edition):
The ampersand character (
&
) and the left angle bracket (<
) must not appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings "&
" and "<
" respectively. The right angle bracket (>
) may be represented using the string ">
", and must, for compatibility, be escaped using either ">
" or a character reference when it appears in the string "]]>
" in content, when that string is not marking the end of a CDATA section.
精彩评论