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
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
- Stylus Studio Technical Forum (14621)
-> + Error when generating .NET cod... (6)
-> + options for sum(function) - to... (2)
-> + [OT] XSD - is this valid XML o... (2)
-> + Multiple page sequences (2)
-> + License disabled (3)
-> + EDIFACT to XML with multiple Q... (5)
-> + Viewing Web Service Call http ... (2)
-> - keyref handling by different p... (1)
-> + Running transform in SS UI com... (9)
-> + Mapping from one schema to ano... (3)
-> - Using document() to lookup fro... (1)
-> + Can not open a xml file in IE ... (2)
-> + Stylus Studio detected a chang... (3)
-> + Customer Support for Stylus St... (2)
-> + WebService Call is not working... (3)
-> + Activation Problem (2)
-> + Activating Stylus Studio 2008 (3)
-> + Cannot use UNC paths, get save... (22)
-> + DB to XML Data Source not avai... (3)
-> + Stylus Studio 2008 Installatio... (16)
-- Previous [1261-1280] [1281-1300] [1301-1320] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Posttop
David BanburySubject: keyref handling by different parsers
Author: David Banbury
Date: 24 Jan 2008 10:27 PM
We are using XSD to define a data file format. We have a schema with a hierarchy that groups data elements together under "subsets" so we have a 3-level hierarchy: superset -> subsets -> elements

We are using key & keyref to define relationships between elements within subsets but also between elements in different subsets. The keys for each element are defined within the subset (for tidy encapsulation). Keyref relationships between elements in the same subset are also encapsulated within that subset.

Relationships between elements in different subsets are defined by keyrefs at the superset level.

(A simplified XSD and corresponding minimal XML file are attached.)

As far as I can gather this does not break the identity constraint rule that "only element information items within the sub-tree rooted at the element information item being validated can be referenced" (XML Schema Specs 3.11.4).

In Stylus Studio the default parser returns an error for this structure saying, "The key for identity constraint of element 'superset' is not found." The available Microsoft parsers (MSXML DOM Parser and SAX Parser (v4.0 & v6.0) and .NET XML Parser) also return errors such as, "cannot find the referred key or unique in scope" or, "The keyref... does not resolve to a key for the Identity Constraint...".

However, other parsers (Java built-in parser, Saxonica 8.9.0.3, XSV 2.10-1) all validate the XML file successfully and correctly. Not only do they not return errors but they also do correctly spot errors if the keyref relationship is not satisfied in the XML data file.

Is the XSD valid and the Microsoft parsers at fault? Or, is the XSD at fault and the other parsers are simply tolerant?

regards,
David Banbury


Unknowntest(5).xsd
XML Schema example

Unknowntest(20).xml
Corresponding XML data file

   
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.