2009-09-19 2 views

Antwort

61

Grundsätzlich verweist es ein anderes Element, das an anderer Stelle delared ist, die nicht das gleiche Schema Dokument sein kann. Zum Beispiel könnte es von einem extern referenzierten Schema in einem anderen Namensraum kommen. Angenommen, Sie verwenden das Element Element viel in mehreren verschiedenen Schemas, können Sie es (und alle anderen gebräuchlichen Typen und Attribute) in einem gemeinsamen Schema deklarieren und dann diese in allen anderen Schemas wiederverwenden. Wenn Sie Ihren gemeinsamen Schema mit dem Namespace c verweisen, können Sie eine Instanz des Artikel elemnt für sich allein oder als Teil einer Art erklären, wie folgt:

<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> 

Die Definition im Daten Schema würde so aussehen:

<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

Ich habe dies abgestimmt, wie es eine gute Erklärung ist. Ein ref-Attribut bezieht sich jedoch auf eine externe Entität mit seiner "ID", nicht "Name". Damit Ihr Beispiel funktioniert, muss die Deklaration von "item" im zweiten Codeblock lauten: rjray

+9

Gemäß aller XSD-Dokumentation I habe gesehen, das "ref" gilt für einen "name", wie hier zu sehen: http://www.w3schools.com/schema/el_element.asp (ref - Optional. Bezieht sich auf den Namen eines anderen Elements. ...) – grkvlt

+1

Wann würde man ref over type wählen? – pikachu0

5

Zum Beispiel, wenn Sie Elementtypen deklarieren möchten, die tief verschachtelt sein können, aber auch als Elemente der obersten Ebene in einem Instanzdokument.

Die XML-Schema Primer hat Beispiele dafür: http://www.w3.org/TR/xmlschema-0/