Betrachten Sie das folgende Schema:Was ist der Unterschied zwischen Ref und Typ in einem XML-Schema?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Root">
<xs:sequence>
<xs:element ref="Child" />
<xs:element name="Child2" type="Child" />
</xs:sequence>
<xs:attribute ref="Att" />
<xs:attribute name="Att2" type="Att" />
</xs:complexType>
<xs:complexType name="Child">
<xs:attribute ref="Att" />
</xs:complexType>
<xs:attribute name="Att" type="xs:integer" />
</xs:schema>
Die ref
zu "Child" on line 6 ausfällt, während die type
auf Linie 7 überprüft. Für das Attribut ist die ref
erfolgreich, während die type
fehlschlägt. Ich versuche zu verstehen, warum.
Mein Verständnis von ref
war, dass es einfach auf ein anderes Element verwiesen und angegeben, dass Sie erwarten, eine Instanz des verwiesenen Typs (mit dem Namen in der Definition angegeben) an diesem Ort zu sehen. Offensichtlich liege ich falsch, also was bedeutet ref
eigentlich?
OK, ich bekomme, dass "Typ" nur auf eine Typdefinition verweisen kann - das macht Sinn. Aber um über 'ref' zu klären: Es kann nur auf eine vorher existierende Instanz eines Elements zeigen und einen Klon davon einfügen? –
Ja, ich denke, es könnte auf diese Weise gesagt werden (wenn "Instanz" irgendein Element der obersten Ebene bedeutet, das irgendwo in xsd deklariert ist). Ein weiterer Unterschied: Wenn Sie 'type' verwenden, können Sie zwei Elemente mit unterschiedlichen Namen mit derselben Struktur haben. Wenn Sie 'ref' verwenden, haben Sie überall Elemente mit demselben Namen oder derselben Struktur. –