2009-09-19 9 views
42

ドキュメントは、スキーマ内の別の要素を参照していると思われますが、どのように使用することができますか?私が扱っているスキーマではこれを見たことがありません。XSDの要素のref属性は何をしますか?

誰かが、その使用方法をさらに説明できる良い使用例がありますか?

答えて

61

は、基本的には、同じスキーマ文書であってもなくてもよい他の場所delaredされた別の要素を参照します。たとえば、別の名前空間の外部参照スキーマから来る可能性があります。 アイテム要素をいくつかの異なるスキーマで多く使用するとしたら、共通のスキーマでそれを宣言して(すべての他の共通の型と属性)、他のすべてのスキーマでそれらを再利用することができます。名前空間Cであなたの共通スキーマを参照する場合は、次のように自分自身でまたはタイプの一環として項目 elemntのインスタンスを宣言することができます。

<xs:element ref="c:item" /><!-- reference here --> 
<xs:complexType name="something"> 
    <xs:sequence> 
     <xs:element ref="c:item" /><!-- and here --> 
    </xs:sequence> 
    <xs:element name="other" type="xs:Name" /> 
</xs:complexType> 

定義をデータでスキーマは次のようになります。

<xs:element name="item" type="itemType" /><!-- referenced element --> 
<xs:complexType name="itemType"> 
    <xs:sequence> 
     <xs:element name="code" type="xs:Name" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence> 
    <xs:attribute name="description" type="xs:normalizedString" use="required" /> 
</xs:complexType> 
+4

私はこのことをよく説明しています。しかし、ref属性は、 "name"ではなく "id"で外部エンティティを参照します。あなたの例を動作させるには、2番目のコードブロックの "item"の宣言が必要です: rjray

+9

'ref'は、ここに見られるように、「名前」に適用されます:http://www.w3schools.com/schema/el_element.asp(ref - オプション。別の要素の名前を参照してください... ) – grkvlt

+1

いつrefをタイプするのですか? – pikachu0

5

たとえば、深くネストされている可能性がある要素型を宣言したい場合は、インスタンス文書の最上位要素として宣言する場合もあります。

ザXMLスキーマプライマーは、このための例がありますhttp://www.w3.org/TR/xmlschema-0/

関連する問題