- From: Eduardo Oliveira <eduardo.oliveirared@gmail.com>
- Date: Mon, 26 Jan 2009 09:55:06 -0200
- To: "C. M. Sperberg-McQueen" <cmsmcq@acm.org>
- Cc: xmlschema-dev@w3.org
- Message-ID: <f7c898bc0901260355g2a73ab1fpbc8a443354ea5b7c@mail.gmail.com>
Hello Mr. Sperberg-McQueen! Thatīs ok! Your solution run as I expected it to run! I just took the freedom to make a little change to reduce the code size, setting the element "a"īs maxOccurs="unbounded", eliminating the second block as below! Thanks a lot! Eduardo <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="root"> <xs:complexType > <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="b"/> <xs:element name="c"/> <xs:element name="x"/> </xs:choice> <xs:element name="a" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 2009/1/25 C. M. Sperberg-McQueen <cmsmcq@acm.org> > > On 24 Jan 2009, at 12:51 , Eduardo Oliveira wrote: > > Thereīs much time since the last message, but I have a problem with the >> given solution. >> Since I use the model below, I canīt force the element to be declared, or >> in other words, the minOccurs does not run. >> >> The piece of code given from "George Cristian Bina": >> >> <xs:complexType> >> <xs:choice maxOccurs="unbounded"> >> <xs:element name="a"/> >> <xs:element name="b"/> >> <xs:element name="c"/> >> <xs:element name="x"/> >> </xs:choice> >> </xs:complexType> >> >> Suppose I wish the <xs:element name="a"/> to always be received, so I >> change the code to the code below, but the minOccurs does not run. >> >> <xs:complexType> >> <xs:choice maxOccurs="unbounded"> >> <xs:element name="a" minOccurs="1"/> >> <xs:element name="b"/> >> <xs:element name="c"/> >> <xs:element name="x"/> >> </xs:choice> >> </xs:complexType> >> >> Does anyone has an idea how can I solve this? >> > > You want a sequence of one or more elements, which must contain at least > one 'a', and may contain any number of b, c, or x elements? > > In a conventional regular expression, you might write > > (b|c|x)*, a, (a|b|c|x)* > > and you can do the same in XSD 1.0: > > <xsd:complexType name="oliveira"> > <xsd:sequence> > <xsd:choice minOccurs="0" maxOccurs="unbounded"> > <xsd:element ref="my:b" /> > <xsd:element ref="my:c" /> > <xsd:element ref="my:x" /> > </xsd:choice> > <xsd:element ref="my:a" /> > <xsd:choice minOccurs="0" maxOccurs="unbounded"> > <xsd:element ref="my:a" /> > <xsd:element ref="my:b" /> > <xsd:element ref="my:c" /> > <xsd:element ref="my:x" /> > </xsd:choice> > </xsd:sequence> > </xsd:complexType> > > I hope this helps. > > -- C. M. Sperberg-McQueen > http://cmsmcq.com/mib > > > >
Received on Monday, 26 January 2009 18:32:08 UTC