Latest web development tutorials

XMLスキーマの要素を交換してください

XMLスキーマによって、要素が別の要素に置き換えることができます。


置換要素

私たちは説明してみましょう:英国とノルウェーからのお客様。 我々は、ユーザーがXMLドキュメントまたは要素の英語名でノルウェーの要素名を使用することを選択してみましょうする能力を持っていると思います。

この問題を解決するために、我々は、XMLスキーマ内のsubstitutionGroupを定義することができます 。 まず、私たちは主要素を宣言し、我々は、彼らが主要な要素を交換することができます一度、これらの要素を宣言することができ、微量元素を宣言します。

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

上記の例では、「名前」要素が主要素である、「navn "要素は"名前 "要素を置き換えることができます。

XMLスキーマフラグメントを考えてみます。

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

(上記のスキーマに応じて)このような妥当なXML文書:

<customer>
<name>John Smith</name>
</customer>

またはこのような何か:

<kunde>
<navn>John Smith</navn>
</kunde>


停止要素を交換してください

他の要素が指定された要素を置き換える防止するために、ブロックプロパティを使用します。

<xs:element name="name" type="xs:string" block="substitution"/>

XMLスキーマフラグメントを参照してください。

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

有効なXML文書は、(上記のスキーマに応じて)次のようになります。

<customer>
<name>John Smith</name>
</customer>

ただし、以下の文書はもはや正当ではありません。

<kunde>
<navn>John Smith</navn>
</kunde>


使用のsubstitutionGroup

交換可能な要素は、同じタイプの主な要素であること、または主要な要素から派生しなければなりません。 型は同じ型の主な要素の要素を置き換えることができる場合は、要素の種類を交換することが可能に指定する必要はありません。

それ以外の場合は動作しません、のsubstitutionGroup(主要な要素と交換可能な要素)内のすべての要素がグローバル要素として宣言する必要があり、注意してください!


グローバル要素(グローバル要素)とは何ですか?

グローバル要素は、「スキーマ」要素の直接の子要素を指します! ローカル要素(ローカル要素は)他の要素内にネストされた要素を指します。