[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
XSD: Problems with restrictions and substitution groups
- From: "John Avery" <j.avery@ballarat.edu.au>
- To: <xml-dev@lists.xml.org>
- Date: Fri, 01 Dec 2006 12:51:48 +1100
I am extending an exisitng schema for a medical messaging paradigm, to
define a more contrained version of the schema for a specific type of
message.
The oringal schema contains the following elemnt OBX:
And I have created several substitutions for an element called OBX,
these substitutions are restrictions of the OBX element and work fine:
<xsd:complexType name="OBX.PD.NeedHelpToCommunicate.CONTENT">
<xsd:complexContent>
<xsd:restriction base="OBX.CONTENT">
<xsd:sequence>
<xsd:element ref="OBX.1"
minOccurs="0"/>
<xsd:element
ref="OBX.2.PD.NeedHelpToCommunicate"/>
<xsd:element
ref="OBX.3.PD.NeedHelpToCommunicate"/>
<xsd:element ref="OBX.5"
maxOccurs="unbounded"/>
<xsd:element ref="OBX.11"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="OBX.PD.NeedHelpToCommunicate"
type="OBX.PD.NeedHelpToCommunicate.CONTENT" substitutionGroup="OBX"/>
<xsd:complexType name="OBX.PD.LanguageSpokenAtHome.CONTENT">
<xsd:complexContent>
<xsd:restriction base="OBX.CONTENT">
<xsd:sequence>
<xsd:element ref="OBX.1"
minOccurs="0"/>
<xsd:element
ref="OBX.2.PD.LanguageSpokenAtHome"/>
<xsd:element
ref="OBX.3.PD.LanguageSpokenAtHome"/>
<xsd:element ref="OBX.5"
maxOccurs="unbounded"/>
<xsd:element ref="OBX.11"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="OBX.PD.LanguageSpokenAtHome"
type="OBX.PD.LanguageSpokenAtHome.CONTENT" substitutionGroup="OBX"/>
I now want to restrict the CLINICAL_OBSERVATION element:
<xsd:complexType name="REF_I12.CLINICAL_OBSERVATION.CONTENT">
<xsd:sequence>
<xsd:element ref="OBR" minOccurs="1" maxOccurs="1" />
<xsd:element ref="OBX" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="REF_I12.CLINICAL_OBSERVATION"
type="REF_I12.CLINICAL_OBSERVATION.CONTENT"/>
To be like this:
<xsd:complexType name="REF_I12.CLINICAL_OBSERVATION.EONI.CONTENT">
<xsd:complexContent>
<xsd:restriction base="REF_I12.CLINICAL_OBSERVATION.CONTENT">
<xsd:sequence>
<xsd:element ref="OBR" minOccurs="1" maxOccurs="1" />
<xsd:element ref="OBX.PD.NeedHelpToCommunicate" minOccurs =
"0"/>
<xsd:element ref="OBX.PD.LanguageSpokenAtHome" minOccurs =
"0"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="REF_I12.CLINICAL_OBSERVATION.EONIi"
type="REF_I12.CLINICAL_OBSERVATION.EONI.CONTENT"
substitutionGroup="REF_I12.CLINICAL_OBSERVATION"/>
Certainly on the surface that seems to be a valid restricition of:
<xsd:sequence>
<xsd:element ref="OBR" minOccurs="1" maxOccurs="1" />
<xsd:element ref="OBX" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
However I get the rcase-Recurse.2 error "There is not a complete
functional mapping beyween the particles". I believe it has something to
do with the way the substitutiongroups of OBX are expanded to a choice
group, and then validated against my restriction, but I have tried all
kinds of ways of wrapping the sequence in choice and sequence tags to no
avail.
Any help would be much appreciated ... even a link to some software
that can show the expansions or give me a more detailed error message
would be very useful.
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]