Dear XSL-list,
I'm beginning to explore schema-aware processing, and for a real project I
need to create some temporary elements with attributes that I would like to
treat as integers. In the non-schema-aware version I explicitly pass the
attributes through the number() function when I need integer behavior, and
that does what I want, but I thought that if I typed the values as
xs:integer when creating them they would be recognized as instances of that
type when used, and would have integer behavior, so that I could
avoid using the number() function explicitly.
I created a small test sample below that replicates the problem I see in my
real code, and I would be grateful if someone could please advise about
what I've misunderstood. What I think I'm doing is creating a a variable
that contains <cell> elements with @row attributes that are typed as
xs:integer, and that therefore should behave as integers when I use them.
But when I test in the <xsl:for-each> at the end whether they are instances
of integers, the system reports that they are not. I'm running the tests at
the command line with Saxon EE and the -sa and -it switches. Thank you for
any guidance you might be able to provide.
Best,
David
__
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs" version="3.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template name="xsl:initial-template">
<xsl:variable name="test" as="element(test)">
<test xsl:validation="preserve">
<xsl:for-each select="1 to 5">
<cell>
<xsl:attribute name="row" type="xs:integer"
select="."/>
<xsl:text>Hi!</xsl:text>
</cell>
</xsl:for-each>
</test>
</xsl:variable>
<xsl:for-each select="$test//cell">
<xsl:message select="@row, @row instance of xs:integer"/>
</xsl:for-each>
<root>
<xsl:sequence select="$test"/>
</root>
</xsl:template>
</xsl:stylesheet>
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--