Ich versuche, eine XSD-Vorlage für die folgenden zu definieren:XSD Zwei Elemente mit dem gleichen Namen, aber unterschiedlichen Attributwert
<template_data>
<given_name lang="ENG">Zluty</given_name>
<given_name lang="CES">Žlutý</given_name>
</template_data>
Bisher habe ich mit
<xs:complexType name="attribute_CES">
<xs:attribute name="lang" type="xs:string" use="required" fixed="CES"/>
</xs:complexType>
<xs:complexType name="attribute_ENG">
<xs:attribute name="lang" type="xs:string" use="required" fixed="ENG"/>
</xs:complexType>
<xs:element name="template_data">
<xs:complexType>
<xs:sequence>
<xs:element name="given_name" type="attribute_CES"/>
<xs:element name="given_name" type="attribute_ENG"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Problem kommen ist, das definiert ein Element mit ein und demselben Namen zweimal, jedes Mal mit einem anderen Typ, zu dem jeder XSD-Validator, den ich gefunden habe, protestiert.
Soweit ich weiß, können Sie verlangen, dass ein Attribut einen bestimmten Wert mit der Option fixed
hat, und das ist in der Definition eines (komplexen) Typs enthalten. Wenn Sie also das Attribut mit einem anderen Wert haben möchten, müssen Sie einen neuen Typ definieren.
Was ich brauche, ist die template_data
beide given_name
s enthalten, genau einmal mit lang="CES"
, und genau einmal mit lang="ENG"
. Gibt es eine Möglichkeit, ein xsd-Validierungsschema dafür zu schreiben, oder ist das unmöglich (zum Beispiel, wenn die XML-Eingabe nicht den Standards entspricht)?
Das mit XSD nicht möglich ist, da dies bedeutet, den Inhalt der Validierung - XSD nur das Schema validieren kann. Du brauchst etwas wie [Schematron] (http://en.wikipedia.org/wiki/Schematron), um zu erreichen, was du brauchst. – Filburt
Wirklich? Ich habe eine grundlegende Inhaltsüberprüfung mit XSD gesehen, mit 'restriction' (http://www.w3schools.com/schema/schema_facets.asp) und mit' fixed' in Attributen (http://www.w3schools.com/ schema/schema_simple_attributes.asp) oder mit types. – Humungus