遭遇する可能性のある問題の 1 つは、ユニーク パーティクル アトリビューションと呼ばれます。any
それはすべて、必要な要素がどの名前空間に含まれているかによって異なります。
最悪のシナリオは、任意の名前空間です。したがって、あなたの要件を引き受けます(InfantPro'Aravind'は、コンテンツセクションを必須にすることで問題を回避し、任意の要素のmaxOccursを任意の数に制限したのとは異なります)、ここから始めます( BAD スキーマ、UPA 違反)。最初に、以下を許可するように any の maxOccurs を修正します1 or more elements to be placed in the location
。
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="content">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="metadata" minOccurs="0" maxOccurs="unbounded"/>
<xsd:any maxOccurs="unbounded"/>
<xsd:element name="content-section" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="content-footer" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
エラーは次のとおりです。
Error occurred while loading [how-can-i-describe-an-element-with-some-any-child-element-and-some-known.xsd], line 8 position 6.
Wildcard '##any' allows element 'metadata', and causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.
これを修正する必要があります。これらはあなたのオプションです:
1) any の名前空間を別のもの (例: ##other) に制限します。
<xsd:any maxOccurs="unbounded" namespace="##other"/>
名前空間を制限できない場合は、次のオプションがあります。
any
2)コンテンツを別の要素 (Extension と呼ばれる) にラップします。
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="content">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="metadata" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="extension"/>
<xsd:element name="content-section" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="content-footer" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
any
他のすべての場合、コンテンツを下部に移動する必要があります。
3)any
右を一番下に移動し、その前に必須要素を置きます。
このタイプをグローバルにしたいが、それが final にならないようにする場合は、他のパターンに入ります。