Schema element contain text or elements, but not both.

A

Alan Johnson

I am trying to specify that an element may contain simple content (an
integer), or complex content (a sequence of two other elements), but not
both. The listMember element in the following XML fragment demonstrates
what I'm trying to accomplish:

<list>
<listMember>
<ident>1</ident>
<name>Name1</name>
</listMember>
<listMember>
<ident>2</ident>
<name>Name2</name>
</listMember>
</list>

<list>
<listMember>1</listMember>
<listMember>2</listMember>
</list>

I cannot, however, figure out any way to create such a restriction. The
following (invalid) schema sort of shows what it is I would like, but of
course it is invalid because listMember is redeclared.

<?xml version="1.0"?>

<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="exampleSchema"
targetNamespace="exampleSchema"
elementFormDefault="qualified">

<xs:element name="list" type="List"/>

<xs:complexType name="List">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element name="listMember" type="ListMember"/>
<xs:element name="listMember" type="xs:integer"/>
</xs:choice>
</xs:sequence>
</xs:complexType>

<xs:complexType name="ListMember">
<xs:sequence>
<xs:element name="indent" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>

</xs:schema>

Do any of you know how I could accomplish this?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,025
Latest member
KetoRushACVFitness

Latest Threads

Top