Hi,
I'm having trouble processing the end of line character ( )
with XSLT. Here is my testcase :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY EOL "
">
<!ENTITY TAB "	">
<!ENTITY SPACE " ">
]>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl-common="http://exslt.org/common"
xmlns:exsl-str="http://exslt.org/strings"
version="1.0"
extension-element-prefixes="exsl-common exsl-str"
exclude-result-prefixes="exsl-common exsl-str">
<xsl:variable name="var1" xml:space="preserve">
<a>
x<!-- The content of "a" is &EOL;x&EOL -->
</a>
</xsl:variable>
<xsl:variable name="var2" xml:space="preserve">
<a>
x <!-- The content of "a" is &EOL;x&SPACE;&EOL -->
</a>
</xsl:variable>
<xsl:template match="/">
<xsl:if
test="contains(exsl-common:node-set($var1)/a/text(),'&EOL;')">
<xsl:message>Contains EOL(1)</xsl:message>
</xsl:if>
<xsl:if
test="contains(exsl-common:node-set($var2)/a/text(),'&EOL;')">
<xsl:message>Contains EOL(2)</xsl:message>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Xalan 2.6.3 (actually its the Xalan bundled with Rational Software
Architect, which is XML4J) produces the following.
file:///D:/xsl/code/testcases/Entities.xsl; Line #32; Column #17;
Contains EOL(2)
<?xml version="1.0" encoding="UTF-8"?>
I get similar results with Saxon 6.5.4 - which indicates that this
is probably not a Xalan bug. But in that case, I'm mystified as to why
the EOL chars in $var1 are invisible. Any ideas?
Thanks,
Kenneth