[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Use xsd to specify multiple instances of existing element
I think what Andrew is suggesting is something like: <xs:element name='category' type='categoryType' /> <xs:complexType name='categoryType' abstract='true'> ... <xs:complexType name='privacy'> <xs:complexContent> <xs:extension base='categoryType'> ... <xs:complexType name='fishingType'> <xs:complexContent> <xs:extension base='categoryType'> ... This obviously has the problem of requiring the use of xsi:type. It does point to XSD1.1's xs:alternative construct being a useful way to go though. Based on the example in the latest draft just before section 3.3.3, you'd have something like: <xs:element name="category" type="categoryType"> <xs:alternative test="@scheme='http://dig.com/privacy'" type="categoryPrivacyType"/> <xs:alternative test="@scheme='http://dig.com/fishingType'" type="categoryFishingType"/> </xs:element> Hopefully someone will correct me if I'm wrong. XSD 1.1 is not even new stuff yet(!), so I guess that is of little help! HTH, Pete Cordell Codalogic Ltd Interface XML to C++ the easy way using XML C++ data binding to convert XSD schemas to C++ classes. Visit http://www.codalogic.com/lmx/ for more info ----- Original Message ----- From: "Rick Jelliffe" <rjelliffe@a...> To: <xml-dev@l...> Sent: Monday, September 22, 2008 11:40 AM Subject: Re: Use xsd to specify multiple instances of existing element > > Andrew Welch wrote: >>> So in order to get your constraint you have three choices: >>> >>> 1) Adopt RELAX NG instead of XSD. >>> 2) Adopt Schematron as well as (or instead of XSD) >>> 3) Adopt XSD 1.1 (if you can find an implementation) and use their >>> assertions. >>> >> >> there's a 4th I think: >> >> 4) annotate the category elements with an xsi:type: >> >> <category xsi:type="privacy" scheme='http://dig.com/privacy' >> term='private'/> >> <category xsi:type="fishingType" scheme='http://dig.com/fishingType' >> term='coarse'/> >> >> ...then just define the types "privacy" and "fishingType" in your >> schema. > I suspect that will not work, but it certainly may be worth a try. > > To make this work, don't you have to define the <entry> element to use > wildcards? For example (loosely) > > <element name="entry" > > <sequence> > <element name="category"> <!-- open category --> > > <xs:any namespace="##targetNamespace"/> > > And if you wanted to make the first optional, alarm bells go off that many > XSD processors are likely to disallow it (due to quasi UPA implementation, > regardless of the standard). > So you lose the ability to say "the second element must be a category" > while gaining the ability to override the schema in the instance. The > trouble with this use of xsi:type is that it really doesn't give you > anything in terms of stricter validation or information > modeling: it lets you get a validation result in spite of the modeling! > Cheers > Rick Jelliffe > > > > > > _______________________________________________________________________ > > XML-DEV is a publicly archived, unmoderated list hosted by OASIS > to support XML implementation and development. To minimize > spam in the archives, you must subscribe before posting. > > [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ > Or unsubscribe: xml-dev-unsubscribe@l... > subscribe: xml-dev-subscribe@l... > List archive: http://lists.xml.org/archives/xml-dev/ > List Guidelines: http://www.oasis-open.org/maillists/guidelines.php > >
[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
|