The XQuery/XSLT type system treats sequences as homogenous, so you can only
constrain the item type and the cardinality (except where you're dealing with
elements validated against a schema, in which case the item type of the parent
can constrain the sequence of children according to the content model of an XSD
complex type).
In XQuery 3.0/XSLT 3.0 you can make greater use of union types:
<xsl:import-schema>
<xs:schema>
<xs:simpleType name="integer-or-date">
<xs:union memberTypes="xs:integer xs:date"/>
</xs:simpleType>
</xs:schema>
</xsl:import-schema>
<xsl:variable name="var" as="int-or-date*" select="...."/>
but in 2.0 you have to declare such a sequence with as="xs:anyAtomicType*"/>
Michael Kay
Saxonica
mike(_at_)saxonica(_dot_)com
+44 (0) 118 946 5893
On 13 Apr 2015, at 11:39, Jorge . chocolate(_dot_)camera(_at_)gmail(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Hi,
I only seldom write XSLT (and specifically only 2.0) so there are many
aspects of it that I am still not familiar with. After reading
<http://www.ibm.com/developerworks/library/x-schemaawarexslt/index.html>
I am forcing myself to declare the type of variables, parameters and,
sometimes, templates. I have immediately seen the benefit of it as
transformations I thought were simple and bug-free fail all over the
place revealing cases I did not account for.
How can I enforce that a variable contains a particular bunch of mixed
types? Say:
<xsl:variable name="MY_VAR" as="…">
<xsl:value-of select="42"/>
<xsl:value-of select="13"/>
<xsl:value-of select="hello"/>
</xsl:variable>
Is there a way to enforce, with the attribute `as`, that the variable
contains a series of integers and a string (or, even, particularly 2
integers and 1 string) or else have the transformation fail?
I am using Saxon-HE 9.2.1.2J.
—
Jorge
--~----------------------------------------------------------------
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
--~--