XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
nea neluSubject: ey/unique that is out of scope
Author: nea nelu
Date: 30 Mar 2005 08:36 PM
Hi,
I'm new with SS XML professional ed.
I have the folowing problem:
I'm using a keyref in an xsd schema.
When I'm trying to enter data in the xml file
I'm getting the folowing message: "refers to a key/unique that is out of scope".

Do I have to bind in a way the xml file containing the reffered key
to the current xml file?
Thanks a lot for your help.

Nea

Postnext
Alberto MassariSubject: ey/unique that is out of scope
Author: Alberto Massari
Date: 31 Mar 2005 04:25 AM
Hi Nea,
can you post as an attachment the XML Schema and the XML files involved?
It's hard for us to understand what's wrong from just a generic description
of the issue.

Thanks,
Alberto

Postnext
nea neluSubject: ey/unique that is out of scope
Author: nea nelu
Date: 31 Mar 2005 10:45 AM
Thank you for your posting,
I'm gone provide more details:

I have 2 xml files: e.xml and d.xml.
Each of them has associated a schema file: e.xsd and d.xsd respectively. Both of them has the same targetnamespace and the same URI.
d.xsd has an <include e.xsd.

e.xsd has a key e_key.
d.xsd has a key d_key.
Moreover d.xsd has a keyref e_key_ref to e_key.
Everityhing is fine until now - the xsd files are validated.
The problem appears when I try to add data to d.xml. I'm getting the error message
regarding the element representing the refference key:
"
The keyref 'e_key_ref' refers to a key/unique that is out of scope.
"

Thank you for your help!

fOLOWING WILL FIND THE FILES (I have made some simplifications for the sake of space)
The files:


-------------------------------------------------------
e.xsd

<?xml version = "1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.pseudo.org"
xmlns:ew="http://www.pseudo.org"
elementFormDefault="qualified">
<element name="Es">
<complexType>
<sequence>
<element ref="ew:E" minOccurs="1" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- Specifying the primary key for the e-->
<key name="E_KEY">
<selector xpath=".//ew:E"/>
<field xpath="ew:ID"/>
</key>
</element>
<!-- defining the IDtype -->
<simpleType name= "IDtype">
<restriction base="integer">
<minInclusive value="1"/>
</restriction>
</simpleType>
<!-- the ID -->
<element name="ID" type="ew:IDtype"/>
<!-- Equipment -->
<element name="E">
<complexType>
<sequence>
<element ref="ew:ID" minOccurs="1" maxOccurs="1"/>
</sequence>
</complexType>
</element>

-------------------------------------------------------
d.xsd

<?xml version = "1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.pseudo.org"
xmlns:ew="http://www.pseudo.org"
elementFormDefault="qualified">
<!-- INCLUDING THE ES SCHEMA -->
<include schemaLocation="file:///./e.xsd"/>
<!-- DEFINING THE DS -->
<element name="Ds">
<complexType>
<sequence>
<element ref="ew:D" minOccurs="1" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- Specifying the primary key for the d-->
<key name="D_KEY">
<selector xpath=".//ew:D"/>
<field xpath="ew:Name"/>
</key>
<!-- DEFINING THE REFERENCE KEY TO EQUIPMENTS -->
<keyref name="E_KEY_REF" refer="ew:E_KEY">
<selector xpath=".//ew:D"/>
<field xpath="ew:EID"/>
</keyref>
</element>

<!-- defining the NAMEtype -->
<simpleType name= "NAMEtype">
<restriction base="string">
</restriction>
</simpleType>

<element name="Department">
<complexType>
<sequence>
<element ref="ew:Name" minOccurs="1" maxOccurs="1"/>
<element ref="ew:EID" minOccurs="1" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>

<element name="Name" type="ew:NAMEtype"/>
<element name="EID" type="ew:IDtype"/>


-------------------------------------------------------
d.xml
<?xml version='1.0' ?>

<a:Ds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://www.pseudo.org" xsi:schemaLocation="http://www.pseudo.org file://./d.xsd">
<a:D>
<a:Name>HJL</a:Name>
<a:EID>3</a:EID> <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! HERE IS THE PLACE WHERE THE ERROR IS THOROWN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
</a:D>
</a:Ds>

---------------------------------------------------------
e.xml
exists and is valid. It contains 3 as an ID in one of its elements.


Posttop
Alberto MassariSubject: ey/unique that is out of scope
Author: Alberto Massari
Date: 31 Mar 2005 01:40 PM
Hi Nea,
you are indeed doing something that the XML Schema specs don't allow.
You want to reference from the definition of D element a table of key
values built on E elements, but the XML Schema specs, at 3.11.4
(Identity-constraint Definition Validation Rules), point 4.3 say:

"4.3 If the {identity-constraint category} is keyref, then for each member
of the qualified node set [...], there must be a node table associated
with the {referenced key} in the [identity-constraint table] of the
element information item [...], which must be understood as logically
prior to this clause of this constraint [...]"

The "logically prior" constraint is further expanded in a following note:
"Note: Because the validation of keyref (see clause 4.3) depends on
finding appropriate entries in a element information item's node table,
and node tables are assembled strictly recursively from the node tables
of descendants, only element information items within the sub-tree
rooted at the element information item being validated can be referenced
successfully."

In your case, while validating D, there is no E element yet visible.
If you want to have D reference E, you must move the two definitions
(the xs:key on E and the xs:keyref on D) upwards, probably on the definition
of the root element (the two snippets you provided are very incomplete,
so I cannot find such a common point).

Hope this helps,
Alberto
element of the

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.