Re: 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:sequence> <xs:element name="foo" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:assert test="count(foo) le $n"/> </xs:restriction> </xs:complexType> 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 Saxonica
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format