Ich entwerfe ein XSD-Schema für alle meine XML-Dateien, die ich im Nachhinein erstellt habe. Ich weiß, dass ich das zuerst machen sollte, aber ich bin irgendwie neu dazu. Bis jetzt funktioniert all mein XML Wunder für meine App, ich will nur eine gute Bestätigung dafür.Verweise auf ein anderes Tag in meinem XML-Schema
Hier ist ein kurzes Beispiel dafür, was ich vorhabe.
<fields>
<field id="name" type="text">
\t <display>Somethings Name</display>
\t <description>The name of the something.</description>
</field>
</fields>
<forms>
<form id="custom_form">
<widgets>
<widget type="text-input">
<field id="name"/>
</widget>
</widgets>
</form>
</forms>
Hier ist ein vereinfachtes Beispiel für den XSD ich habe:
<xs:sequence>
<xs:element name="fields" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="field" type="fieldType"
minOccurs="1" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="forms" maxOccurs="1" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="form" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="widgets" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="widget" minOccurs="1" maxOccurs="unbounded">
<!-- What do I put here to reference a field? -->
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
Meine Hauptfrage ist, wie kann ich feststellen, das XSD-Schema, das die Element innerhalb des widget
Knotens ist eine Referenz auf eines der Felder defi ned im fields
Knoten darüber? Im Moment verwende ich einfach Code für diese Validierung.
Wie soll ich den Feldknoten in diesem Szenario definieren? Soll ich einfach den Knoten field
zweimal definieren, einen für die Hauptdefinition und einen für die Referenzierung eines Feldes innerhalb eines Widget-Knotens?
Ich sah auch, gibt es die Möglichkeit, Knoten in einem XSD neu zu definieren. Sollte ich vielleicht die Hauptdefinition field
definieren und sie dann als referenzierten Stilknoten für die Widgets definieren? Wie würde ich das überhaupt machen?
Haben Sie Vorschläge für das, was in diesem Szenario häufig oder beliebt ist?
Oh dang, genau das, was ich gesucht habe. Seltsame Sache ist W3Schools noch Eclipse XSD-Tools haben keine Erwähnung von Schlüssel/Keyref, so dass ich nie allein kam. Sieht so aus, als gäbe es einige XSD-Features. –