W3C home > Mailing lists > Public > xmlschema-dev@w3.org > June 2009

Re: How to choice the attribute group for element?

From: Pete Cordell <petexmldev@codalogic.com>
Date: Tue, 9 Jun 2009 09:31:22 +0100
Message-ID: <1BA451EE484B47178570E848428FCD17@Codalogic>
To: "bacoo_zh" <bacoo_zh@163.com>, "xmlschema-dev" <xmlschema-dev@w3.org>
I'm afraid that currently you can't do what you want to do in XSD 1.0.  The 
still being developed XSD 1.1 will allow you to do what you want to do via 
xs:assert elements.

With regard to your example schema, this is not valid because it violates 
XSD's Unique Particle Attribution (UPA) Constraint.  In other words, it 
defines a schema such that when parsing an XML instance and encountering an 
element called "x" it is not possible for the parser to tell whether it 
refers to the first "x" definition or the second "x" definition.

The Relax NG schema language doesn't impose such constraints on a parser and 
I believe the equivalent form of your schema expressed in Relax NG would be 
valid.

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.xmldatabinding.net or http://www.xml2cpp.com
for more info
----- Original Message ----- 
From: "bacoo_zh" <bacoo_zh@163.com>
To: "xmlschema-dev" <xmlschema-dev@w3.org>
Sent: Saturday, June 06, 2009 5:55 PM
Subject: How to choice the attribute group for element?


Hi,
This is my first time to have a discussion here. I'm new to XML Schema.
Now I want to define an element with three attributes: A, B and C. However, 
I don't want the three attributes occur simultaneously.
I need A and B occur simultaneously, or only C occurs singlely.

<x A="a" B="b"/>
or
<x C="c">

How to do this?
I use 'choic' to implement this as follows, but it don't work.
<xs:choice maxOccurs="unbounded">
      <xs:element name="x"  type="xs:string">
<xs:complexType>
<xs:attribute name="A" type="xs:string"/>
<xs:attribute name="B" type="xs:string"/>
</xs:complexType>
      </xs:element>
      <xs:element name="x"  type="xs:string">
<xs:complexType>
<xs:attribute name="C" type="xs:string"/>
</xs:complexType>
      </xs:element>
<xs:choice>
By the way, after goooooogling, I found that the code above is right in the 
old XML Schema criteria, but nowadays I can't use it any more and the XMLSpy 
software will report errors with the code above. Is there anyone that know 
about the related information?
It has bothered me several days. I'll appreciate your help sincerely. 
Received on Tuesday, 9 June 2009 08:32:06 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:15:12 GMT