[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
RE: [xml-dev] HowTo describe some things using XML Schema
- From: "Michael Kay" <mike@saxonica.com>
- To: "'Slava'" <slava.mayorov@gmail.com>,<xml-dev@lists.xml.org>
- Date: Mon, 10 Nov 2008 11:16:44 -0000
Unfortunately, for reasons I do not understand, identity constraints (such
as key and unique) belong to an element declaration rather than to a type;
if you have several elements with this type, then each one will need to
declare the key separately. In XSD 1.1 you can declare the key once, and
then reference it from other elements.
As for question 3, XSD does not allow you to have two different content
models for the same element. This is fixed in XSD 1.1 using the mechanism of
"conditional type assignment" - you can say that the element must belong to
one type if it has an @id attribute, and to a different type if it does not.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Slava [mailto:slava.mayorov@gmail.com]
> Sent: 08 November 2008 09:10
> To: xml-dev@lists.xml.org
> Subject: [xml-dev] HowTo describe some things using XML Schema
>
> hi
>
> im was develop an own format of XML document and want to
> describe this format using XML Schema.
>
> for example i have a ComplexType called "Cloud" with next schema:
> ==============================================================
> ========================
> <xsd:complexType name="Cloud">
> <xsd:sequence minOccurs="0" maxOccurs="1">
> <xsd:element name="parentclouds" minOccurs="0"
> maxOccurs="1">
> <xsd:complexType>
> <xsd:choice minOccurs="0"
> maxOccurs="unbounded">
> <xsd:element
> name="cloud" type="CloudObject"/>
> </xsd:choice>
> </xsd:complexType>
> </xsd:element>
> <xsd:group ref="MandatoryAttributes"
> minOccurs="0" maxOccurs="1"/>
> <xsd:group ref="Attributes" minOccurs="0"
> maxOccurs="unbounded"/>
> </xsd:sequence>
> <xsd:attribute name="id" type="xsd:NMTOKEN" use="optional"/>
> <xsd:attribute name="name" type="xsd:string" use="required"/>
> <xsd:attribute name="type" type="xsd:string"
> use="optional"/> </xsd:complexType>
> ==============================================================
> ========================
>
> 1. How to describe a Key which can be declared using @id
> attribute in any elements of "Cloud" type.
> 2. How to describe a KeyRef which can refers to the @id
> attribute (to the key from first question) 3. How to describe
> an element which is either a "Cloud" or it can be simple
> element with one attribute called @refid which is a KeyRef
> from second question..
>
> More simple.. how to describe this document:
> <cloud id="123" name="newcl"/>
> <cloud refid="123"/>
> <cloud id="1234" name="test"/>
> <cloud id="1234" name="test2"/> <-- an error key not unique
> <cloud refid="xxx"/> <-- an error key not declared <cloud
> refid="1234" name="test2"/> <-- an error (???), refid is used...
>
> i.e.: when using @refid - the @name and @id attributes must
> be prohibited and vice-versa
>
> TIA
>
> --
> ...with best regards && have a nice day...
>
> ______________________________________________________________
> _________
>
> 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@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org 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]