I am using the latest Apache Xalan XSLT 3.0 development branch and find
some odd behaviour when using
<xsl:variable name="n" as="xs:integer">
<xsl:number/>
</xsl:variable>
that yields an error "(javax.xml.transform.TransformerException):
XTTE0570 : XSL variable n's value doesn't conform to variable's type
declaration xs:integer"
I would expect the 'as="xs:integer"' attribute to cast the value of the
variable to an xs:integer (see
https://www.w3.org/TR/xslt-30/#variable-values explaining "Value is
obtained by evaluating the sequence constructor, adjusted to the type
required by the as attribute")
Any thoughts as to why this is not working? I think that worked previously.
Full code examples:
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
expand-text="yes"
version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="chapter">
<xsl:variable name="n" as="xs:integer">
<xsl:number/>
</xsl:variable>
<xsl:comment>Processing {node-name()} number {$n}</xsl:comment>
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
XML
<book title="Example book">
<chapter id="ch1">
<section>..</section>
<section>
<para>..</para>
<para><!-- paragraph in section --></para>
</section>
</chapter>
<chapter id="ch2">
<section>..</section>
<section>
<para>..</para>
<para><!-- paragraph in section --></para>
</section>
</chapter>
<chapter id="ch3">
<section>..</section>
<section>
<para>..</para>
<para><!-- paragraph in section --></para>
</section>
</chapter>
<chapter id="ch4">
<section>..</section>
<section>
<para>..</para>
<para><!-- paragraph in section --></para>
</section>
</chapter>
<chapter id="ch5">
<section>..</section>
<section>
<para>..</para>
<para><!-- paragraph in section --></para>
</section>
</chapter>
<chapter id="ch6">
<section>..</section>
<section>
<para>..</para>
<para><!-- paragraph in section --></para>
</section>
</chapter>
</book>