2016-06-16 7 views
0

Ich möchte nur eine XSD für beliebige XML-Elemente mit so vielen Wurzeln wie möglich. Die Einschränkung ist, dass es kein selbst schließendes Tag und keine erlaubten Attribute geben sollte. Jede mögliche Verschachtelungsebene Zum BeispielXSD für keine Attribute und keine selbstschließende

<a>A<b>BB</b><c></c></a><d>aa</d> 

Beachten Sie, dass es mehrere Wurzeln und kein Attribut und keine Selbstschließung gibt.

Antwort

2

(1) Wenn ein Dokument nicht gut formatiert ist, wird es nicht gegen ein Schema validiert. Ein Dokument wird mehrere Wurzelelemente nicht gut ausgebildet.

(2) Sie können XSD nicht verwenden, um Ihrem XML-Code rein lexikalische Einschränkungen aufzuerlegen, z. B. um den Leerraum zwischen Attributen oder die Auswahl von einfachen oder doppelten Anführungszeichen oder die Verwendung von Dezimalzahlen einzuschränken. versus-hexadezimale Zeichenreferenzen oder die Wahl zwischen <a></a> gegenüber , um ein leeres Element darzustellen. Empfangene Anwendungen sollten sich nicht um diese Unterschiede kümmern, und wenn sie einen konformen XML-Parser verwenden, werden sie die Unterschiede sowieso nie kennen. XSD ist für die Validierung der logischen Struktur, die Dinge, die Anwendungen kümmern.

+0

Also, was ist der richtige Weg, um dies zu validieren. – user960567

+0

@ user960567: Sie haben eine gründliche Antwort erhalten, in der Sie erklärt haben, dass Ihre Textdaten keine XML sind und daher nicht mit XML-Standards wie XSD validiert werden können. Sie würden wahrscheinlich davon profitieren, mehr über den Unterschied zwischen wohlgeformten und gültigen XML-Dateien zu lesen (http://stackoverflow.com/a/25830482/290085). Der "richtige" Weg ist es, Ihre Daten zu einem wohlgeformten XML zu machen. Andernfalls können Sie eine neue Sprache definieren (nicht XML) und neue Tools zum Parsen und Validieren für diese Sprache erstellen. – kjhughes

+0

Sie können dies natürlich überprüfen, indem Sie es in wohlgeformtes XML umwandeln und das Ergebnis der Konvertierung validieren. Dies kann so einfach sein, wie '' am Anfang und '' am Ende hinzuzufügen. Aber es gibt noch weitere Probleme. Sie können selbstschließende Tags nicht verhindern, da dies eher eine lexikalische Einschränkung als eine strukturelle Einschränkung darstellt. Sie können Elemente mit beliebigem Namen mithilfe von Platzhaltern zulassen, aber Sie können die Struktur solcher Elemente nicht einschränken (z. B. keine Attribute haben): Wenn Sie Elemente mit beliebigen Namen zulassen möchten, müssen Sie auch zulassen, dass sie beliebigen Inhalt haben. –