OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] variables in XSD?

On 23/03/2011 16:48, trubliphone wrote:
> Hello.  Is there any way to use variables w/in XSD?
> I would like to bind the maxOccurs attribute of an element to a value
> defined elsewhere in the XSD file.  It could either be defined as its
> own variable or as a computed value.  I've been working in XSL for so
> long, I just sort of assumed I could do this:
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>    <xs:element name="root">
>      <xs:complexContent>
>        <xs:sequence>
>          <xs:element name="foo" minOccurs="0" maxOccurs="$n"/>
>        </xs:sequence>
>      </xs:complexContent>
>    </xs:element>
>    <!-- I know this is wrong -->
>    <xs:variable name="n">23</xs:variable>
> </xs:schema>
> Obviously, this won't work.  But is there any way it could work?  I
> don't think so, I just thought I'd double-check.

I've been experimenting with the following extension to XSD 1.1:

<saxon:param name="n" select="23"/>

   <xs:complexType name="rootType">
     <xs:restriction base="xs:anyType">
         <xs:element name="foo" minOccurs="0" maxOccurs="unbounded"/>
       <xs:assert test="count(foo) le $n"/>

which is close to what you are looking for (with the value of n supplied from the command line or via the invokation API). I had this working in some simple cases, but found problems when used in conjunction with multi-document schemas, so I pulled it before the 9.3 release: however, I hope to put it back some time. I think the idea of being able to parameterize schema validation is a very powerful one.

Michael Kay

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS