xsl-list
[Top] [All Lists]

Re: [xsl] Type of a variable containing values of mixed types

2015-04-13 05:53:06
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
--~--

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