... refers to a key/unique that is out of scope - woran liegts denn?

20/04/2008 - 19:29 von Thomas | Report spam
Hallo zusammen,

ich bin am Lernen von XML-Schema und habe ein Problem beim Validieren
einer XML-Instanze.

Ich verwende Stylus Studio 2006 Editor. Beim Validieren des
XML-Dokuments bekomme ich folgende Fehlermeldung:

The keyref 'dummy' refers to a key/unique that is out of scope.

Beispiel XSD aus MSDN ==http://msdn2.microsoft.com/de-de/library/ms256101(VS.80).aspx
=<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="namespace1"
xmlns:r="namespace1"
elementFormDefault="qualified">

<xs:element name="root">
<xs:complexType>
<xs:sequence>

<xs:element name="A" type="r:A" maxOccurs="unbounded">
<xs:keyref name="dummy" refer="r:pNumKey">
<xs:selector xpath="r:part"/>
<xs:field xpath="@ref-number"/>
</xs:keyref>
</xs:element>

<xs:element name="B" type="r:B"/>

</xs:sequence>
</xs:complexType>

<xs:key name="pNumKey">
<xs:selector xpath="r:B/r:part"/>
<xs:field xpath="@key-number"/>
</xs:key>

</xs:element>

<xs:complexType name="A">
<xs:sequence>
<xs:element name="part" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ref-number" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>

<xs:complexType name="B">
<xs:sequence>
<xs:element name="part" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="key-number" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>

</xs:schema>
= ENDE von XSD ==

= XML Dokument ==Damit ich das Dokument gegen XSD validieren kann, habe ich den Kopf von
XML etwas ergànzt. s. Code!
==<root xmlns="namespace1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="namespace1 KeyRef.xsd">
<A>
<!-- if the ref-number is not equal to one of the key-number, the
validation will give error -->
<part ref-number="1"/>
</A>
<A>
<!-- if the ref-number is not equal to one of the key-number, the
validation will give error -->
<part ref-number="2"/>
</A>
<B>
<part key-number="1"/>
<part key-number="2"/>
<part key-number="3"/>
</B>
</root>
ENDE von XML Document ==
Ich kann keinen Fehler feststellen. Woran liegt es denn?

Danke vorab für jede Anregung oder Hilfe.

Gruß
Thomas
 

Lesen sie die antworten

#1 Martin Honnen
20/04/2008 - 19:36 | Warnen spam
Thomas wrote:

ich bin am Lernen von XML-Schema und habe ein Problem beim Validieren
einer XML-Instanze.

Ich verwende Stylus Studio 2006 Editor. Beim Validieren des
XML-Dokuments bekomme ich folgende Fehlermeldung:

The keyref 'dummy' refers to a key/unique that is out of scope.

Beispiel XSD aus MSDN ==> http://msdn2.microsoft.com/de-de/library/ms256101(VS.80).aspx
=> <xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="namespace1"
xmlns:r="namespace1"
elementFormDefault="qualified">

<xs:element name="root">
<xs:complexType>
<xs:sequence>

<xs:element name="A" type="r:A" maxOccurs="unbounded">
<xs:keyref name="dummy" refer="r:pNumKey">
<xs:selector xpath="r:part"/>
<xs:field xpath="@ref-number"/>
</xs:keyref>
</xs:element>

<xs:element name="B" type="r:B"/>

</xs:sequence>
</xs:complexType>



Verschiebe die xs:keyref-Definition mal hier hin, die XPath-Definitionen
müssen dann natürlich angepasst werden.

<xs:key name="pNumKey">
<xs:selector xpath="r:B/r:part"/>
<xs:field xpath="@key-number"/>
</xs:key>






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

Ähnliche fragen