Jorge . chocolate(_dot_)camera(_at_)gmail(_dot_)com wrote:
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?
Inside your variable with xsl:value-of you construct text nodes, not
numbers or strings. If you want to output an integer then use e.g.
<xsl:sequence select="42"/>
to construct a string literal use e.g.
<xsl:sequence select="'hello'"/>
As for the "as" attribute, you can use
as="item()*"
to make sure you get a sequence of values and not a temporary tree.
I am not sure a union type would help to allow only integers and
strings, but I am sure you can't specify that a sequence is made up of
two integers followed by one string. You would need to define a complex
type with a sequence of two elements of type xs:integer and a third
element of type xs:string and then would need a schema-aware processor
which Saxon HE not is. And it would no longer be a sequence of atomic
types but rather a sequence of elements.
--~----------------------------------------------------------------
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
--~--