- From: George Cristian Bina <george@sync.ro>
- Date: Wed, 09 Nov 2005 09:56:29 +0200
- To: "Kevin Y. Kim (Lists)" <kykim_lists@mac.com>
- Cc: xmlschema-dev@w3.org
Hi Kevin,
The best you can do is to make the element optional and the complex type
mixed. That will give you a relaxed model that will cover both cases:
<xs:complexType name="foo2" mixed="true">
<xs:sequence>
<xs:element name="bar" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Additional constraints can be enforced then either at application level
or embedding Schematron rules in your XML Schema.
There is also the option of using xsi:type to specify the type for foo
in the instance document, see Michael Kay's answer two days ago on this
list.
Then you will have something like:
<some_xml>
<foo xsi:type="foo1">some_value</foo>
<foo xsi:type="foo2">
<bar>another_value</bar>
</foo>
<foo xsi:type="foo1">third_value</foo>
</some_xml>
Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
Kevin Y. Kim (Lists) wrote:
>
> Hi,
>
> I'm trying to define a schema that will support the following:
>
> 1 <some_xml>
> 2 <foo>some_value</foo>
> 3 <foo>
> 4 <bar>another_value</bar>
> 5 <foo>
> 6 <foo>third_value</foo>
> 7 </some_xml>
>
> Now, I know how to defined the schema for each case:
> For 2 & 6:
> <xsd:complexType name="foo1">
> <xsd:simpleContent>
> <xsd:extension type="xsd:string"/>
> </xsd:simpleContent>
> </xsd:complexType>
>
> For 3 - 5:
> <xsd:complexType name="foo2">
> <xsd:sequence>
> <xsd:element name="bar" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
>
> But how would I defined a schema to encompass both?
>
> Thanks,
> -kevin
>
>
>
Received on Wednesday, 9 November 2005 07:55:12 UTC