2017-12-14 6 views
0

Ich bin ein Neuling in Bezug auf xml/xsd und würde mich über einige Ratschläge zu einem Problem im Zusammenhang mit der Validierung von Elementwerten freuen.Kann ein XML-Schema einen Elementwert basierend auf dem Vorhandensein eines anderen Elementwerts validieren?

Ich entwickle ein System, um mit Kursen innerhalb eines Lehrplans zu arbeiten. Ein Curriculum besteht aus einer Gruppe von Kursen und jeder Kurs wird eine Reihe von Merkmalen haben, einschließlich einer ID.

Die Voraussetzungen für einen Kurs sind IDs, die anderen in der XML angegebenen Kursen entsprechen.

Gibt es eine Möglichkeit zu validieren, dass eine ID-Nummer in einem vorausgesetzten Element als Kurs-ID für ein anderes Element existiert?

Unten ist mein Anfang bei dem Schema.

Vielen Dank für den Rat, den Sie geben können.

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
    targetNamespace="some relevant uri" 
    xmlns:ap="some relevant uri"> 

    <xs:element name="course"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="ap:id"/> 
       <xs:element ref="ap:prerequisite" minOccurs="0" maxOccurs="unbounded"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    <xs:element name="id" type=?????> 
    </xs:element> 

    <xs:element name="prerequisite" type=?????> 
    </xs:element> 

</xs:schema> 

Antwort

1

Sie können dies mit xs: key und xs: keyref tun. Hoffentlich wissen, die Schlüsselwörter können Sie den relevanten Abschnitt in Ihrem Lieblings-XML-Schema-Lehrbuch zu finden ...

Die wichtigste Sache zu erinnern ist, dass diese Erklärungen als Teil der Element-Deklaration für das Element angezeigt werden müssen, in dem die Einschränkung gilt : Wenn die Regel "innerhalb eines X ist, muss jedes Y einen eindeutigen Wert für Z haben und jedes V muss einen Wert für W haben, der mit dem Wert von Z für einige Y (innerhalb desselben X) übereinstimmt", dann

  • in der Erklärung von X, einen Schlüssel mit name = N, Y = Auswahl, Bereich = Z

  • definiere ich n die Deklaration von X, eine keyref mit ref definieren = N, V ​​= Auswahl, Bereich = W.

In Ihrem Beispiel Y Kurs ist, Z id ist, V ist die Voraussetzung, ist W id. Ich weiß nicht, was X ist, aber es ist wahrscheinlich das Elternteil Ihrer Kurselemente.

Verwandte Themen