2016-07-26 30 views
1

Ich habe ein XML-Dokument mit sprachspezifischen Elementen, beispielsweise:Wie validiere ich für Sprachattribute in XSD?

<root lang="en fr"> 
    <section> 
     <title lang="en">English Title</title> 
     <title lang="fr">French Title</title> 
     <sequence>2</sequence> 
     <field> 
      <type>date</type> 
      <label lang="en">English field label</label> 
      <label lang="fr">French field label</label> 
     </field> 
    </section> 
    <section> 
     <title lang="en">Another English Title</title> 
     <title lang="fr">Another French Title</title> 
     <sequence>1</sequence> 
    </section> 
</root> 

An der Spitze ist das Stammelement vorgesehen, das Dokument zu erklären, Englisch und Französisch Informationen definiert.

Es gibt bestimmte Elemente im Dokument, die in Englisch und Französisch zur Verfügung gestellt werden müssen, z. B. title und label, da das Stammelement die Unterstützung für beide angibt.

Ist es möglich, eine solche Einschränkung im XML-Schema auszudrücken? Ich könnte das Element root Element Sprache Attribut anders, wie lang-en="1" lang-fr="1", wenn das hilft.

Antwort

0

In XSD 1.0 können Sie eine solche Einschränkung nicht darstellen.

In XSD 1.1 können Sie xsd:assert verwenden, aber es müsste unter der root Ebene sein. Ein Beispiel für die Durchführung einer Assertion mit einem XPath 2.0-Ausdruck every..in..satisfies finden Sie unter How to access parent element in XSD assertion XPath?.

Siehe auch für die allgemein i18n in XML-Design-Überlegungen: xml:lang in XML document schemas

+0

Sie können (nur) in der Lage sein, hier XSD 1.1 vererbbare Eigenschaften zu verwenden. Wenn Sie das Attribut root/@ lang als vererbbar definieren, wird es für die Verwendung in einer bedingten Typzuweisung für Elemente weiter unten im Baum verfügbar. Aber wenn ich mir das Detail anschaue, bin ich nicht sicher, ob es für diesen Anwendungsfall flexibel genug ist. –