2009-09-19 21 views

risposta

61

Fondamentalmente si fa riferimento a un altro elemento che è delared altrove, che può o non può essere lo stesso documento di schema. Ad esempio, potrebbe provenire da uno schema di riferimento esterno in un diverso spazio dei nomi. Si supponga di utilizzare molto l'elemento elemento in diversi schemi diversi, che sia possibile dichiararlo (e altri tipi e attributi comuni) in uno schema comunee quindi riutilizzarlo in tutti gli altri schemi. Se si fa riferimento vostra comune schema con lo spazio dei nomi c, è possibile dichiarare un'istanza del voce elemnt da solo o come parte di un tipo come segue:

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

La definizione nei dati schema sarebbe simile a questo:

<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

Ho votato questo, poiché è una buona spiegazione. Tuttavia, un attributo ref si riferisce a un'entità esterna con il suo "id", non con "nome". Perché il tuo esempio funzioni, la dichiarazione di "item" nel secondo code-block deve essere: rjray

+9

Secondo tutta la documentazione XSD I Ho visto, il "ref" si applica a un "nome", come visto qui: http://www.w3schools.com/schema/el_element.asp (ref - Opzionale. Si riferisce al nome di un altro elemento ...) – grkvlt

+1

Quando si sceglie il tipo di refub? – pikachu0

5

Ad esempio se si desidera dichiarare tipi di elemento che possono apparire profondamente annidati, ma anche come elementi di livello superiore in un documento di istanza.

L'XML Schema Primer ha esempi di questo: http://www.w3.org/TR/xmlschema-0/