xsl-list
[Top] [All Lists]

Re: [xsl] Using @validation and @type?

2019-11-26 02:10:06
I don’t import a schema, and, for that matter, I don’t transform a document. I 
create temporary elements inside the stylesheet and I want some of their 
attributes to be typed as integers. I’m not trying to validate anything except 
the typing on these ephemeral elements. 

On Nov 25, 2019, at 11:50 PM, Martin Honnen 
martin(_dot_)honnen(_at_)gmx(_dot_)de 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

Am 26.11.2019 um 02:38 schrieb David Birnbaum djbpitt(_at_)gmail(_dot_)com:
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>


Where do you import a schema?

--~----------------------------------------------------------------
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
--~--

<Prev in Thread] Current Thread [Next in Thread>