2017-01-13 4 views
-1

i eine einfache xml wie diese:xml Dokumenttypdefinition -> erlaubt nur unterschiedliche Werte

<whiskey> 
    <taste></taste> 
    <taste></taste> 
</whiskey> 

mein Problem ist jetzt, dass der Benutzer nur ein paar verschiedenen Geschmäcker einfügen erlaubt -> Wie kann ich stellen Sie sicher, mit der DTD-Datei, die der Benutzer kann nur in 2 verschiedene vavalues ​​und nicht das gleiche eingeben ...?

Danke für jede Hilfe!

greetz

+0

mein dtd sieht im Moment so aus: ---------- ------------- was mindestens 2 bedeutet Schmeckt, aber auch mehr sind möglich ... aber wie kann ich sicherstellen, dass Taste1 und Taste2 nicht gleich sind? – nbg15

Antwort

1

eine DTD verwenden können Sie nicht sicher, dass alle Elemente unterschiedliche Werte haben. Tatsächlich können Sie dies nicht mit den am häufigsten verwendeten XML-Typdefinitionssprachen wie XML Schema oder Relax NG tun.

Es gibt jedoch auf Assertionen basierende Typdefinitionssprachen, z. B. Schematron, in denen Sie Invarianten angeben können, die vom XML-Dokument überprüft werden müssen. In Schematron werden diese Behauptungen mit XPath geschrieben.

+0

True, dass XSD nicht verlangen kann, dass "alle Elemente" unterschiedliche Werte haben; Es stimmt nicht, dass die Anforderung von OP (alle "Geschmackselemente" innerhalb eines gegebenen Whiskeyelements unterschiedliche Werte haben) nicht durch XSD erzwungen werden kann. –

+0

Könnten Sie bitte ein Beispiel für eine XSD geben, die Dokumente validiert, bei denen der Inhalt von 2 Elementen unterschiedlich ist, sie aber nicht validiert, wenn sie identisch sind? – jpleal

+0

Sicher; Definieren Sie Whisky und Geschmack wie für dieses Vokabular, und fügen Sie dem Whisky-Element eine Eindeutigkeitsbeschränkung hinzu, die auf die kindlichen Geschmackselemente verweist. –

Verwandte Themen