Frage zum XML-Schema

28/03/2008 - 10:50 von D.Follmann | Report spam
Hallo zusammen,

ich habe eine Frage zu einer XML-Schema-Funktion.
Folgende Funktion hàtte ich gerne:

In einem XML-Dokument ( siehe Beispiel) sind verschiedene Elemente
vorhanden, die jeweils mehrere Unterelemente enthalten können.
Das Beispieldokument enthàlt in den "Para"-Elementen in der Gruppe "Paras"
Unterelemente mit der Bezeichnung "PTIndex" mit einem int-Wert.
Außerdem enthalten Die "Plaintext"-Elemente in der Gruppe "Plaintexts"
ebenfalls ein Element Namens "PTIndex".
Bei der Validierung soll nun überprüft werden, ob zu jedem "Para"-Element
das zugehörige "Plaintext"-Element vorhanden ist. ansonsten soll ein
Validierungsfehler auftreten.
Sprich: zum 1."Para"-Element im Beispiel (PTIndex=1) ist das zugehörige
"Plaintext"-Element vorhanden(PTIndex auch = 1). Zum 2. "Para"-Element
(PTIndex = 4) ist jedoch kein passendes "Plaintext"-Element vorhanden => Hier
soll ein Fehler auftreten!


=Beispiel:
=<?xml version="1.0" encoding="iso-8859-1"?>
<RootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Schema.xsd">
<Paras>
<Para>
<a/>
<b/>
<PTIndex>1</PTIndex>
</Para>
<Para>
<a/>
<b/>
<PTIndex>4</PTIndex>
</Para>
</Paras>
<PlainTexts>
<PlainText>
<c/>
<d/>
<PTIndex>1</PTIndex>
</PlainText>
<PlainText>
<c/>
<d/>
<PTIndex>2</PTIndex>
<PlainText>
</PlainTexts>
</RootElement>

==

Gibt es mit XSD-Schemata eine Möglichkeit dies zu realisieren? Wenn ja,
welche?

Vielen Dank im vorraus!
 

Lesen sie die antworten

#1 Martin Honnen
28/03/2008 - 13:45 | Warnen spam
D.Follmann wrote:

Gibt es mit XSD-Schemata eine Möglichkeit dies zu realisieren? Wenn ja,
welche?



Das ist mittels xs:key/keyref möglich, siehe
<URL:http://www.w3.org/TR/xmlschema-0/#s...irRefs>

<xs:element name="RootElement">
<xs:complexType>
...
</xs:complexType>
<xs:key name="pt-index">
<xs:selector xpath="Paras/Para"/>
<xs:field xpath="PTIndex"/>
</xs:key>
<xs:keyref name="pt-index-reference" refer="pt-index">
<xs:selector xpath="PlainTexts/PlainText"/>
<xs:field xpath="PTIndex"/>
</xs:keyref>
</xs:element>


Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen