[XMLSCHEMA-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Both extending and restricting with <redefine>

From: Michael Kay <mike@saxonica.com>
Date: Fri, 1 Apr 2005 15:34:28 +0100
To: "'Hirtle, David'" <David.Hirtle@nrc-cnrc.gc.ca>, <xmlschema-dev@w3.org>
Message-ID: <E1DHNEL-00072i-B4@frink.w3.org>
ruleml editor download

I think this is working in Saxon more by accident than design.

I can't see a rule in Schema that bans <xs:redefine> containing two
redefinitions of the same component, but there's also no statement saying
what the effect should be.

Intuitively, it would be safer to go through two levels of xs:redefine.

Though I have to say whenever I see a schema that uses xs:redefine it brings
back very painful memories of the struggle to get it working at all. My
advice would be to avoid it. There are some potentially very nasty
side-effects, for example if one stylesheet running in a web service
redefines a schema, the effect is pervasive for all other subsequent
transformations importing that schema namespace and using the same schema
cache. Saxon doesn't allow the schema cache to contain two different
components with the same name. I'm hoping the new model for component
identity in 1.1 will address this problem...

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Hirtle, David
> Sent: 01 April 2005 15:10
> To: xmlschema-dev@w3.org
> Subject: Both extending and restricting with <redefine>
> 
> 
> (Apologies if this message is received more than once -- yesterday's
> attempt seems to have not gone through.)
> 
> I originally thought that XML Schema didn't permit "replacing" an
> element with another via <redefine>, i.e. both extending and
> restricting a content model, but the spec doesn't seem to forbid doing
> it in two steps... so I whipped up an example.  Unfortunately, I'm
> getting mixed validation results.
> 
> a.xsd (http://www.ruleml.org/0.89/xsd/a.xsd) defines an element "body"
> which allows only the element "x".
> 
> b.xsd (http://www.ruleml.org/0.89/xsd/b.xsd) redefines "body" from
> a.xsd, first extending it to allow a new element "y" and then
> restricting it to disallow "x", effectively replacing "x" with "y" in
> the content model of "body".
> 
> Assuming this is permissible in XML Schema...
> 
> ab.ruleml (http://www.ruleml.org/0.89/exa/ab.ruleml) should not be
> valid w.r.t. b.xsd because "body" contains an "x".
> 
> XSV (web form and installation) reports no validity problems but
> crashes.  Saxon correctly (?) identifies the problem, as appended
> below.
> 
> So I'm left with the question: is this the correct way to "replace" an
> element with another in a content model via <redefine> (if possible at
> all with XML Schema)?  And what about the validators?
> 
> Thanks,
> 
> David
> 
> ***
> 
> java com.saxonica.Validate -t http://www.ruleml.org/0.89/exa/ab.ruleml
> Saxon-SA 8.3 from Saxonica
> Java version 1.5.0_01
> Processing http://www.ruleml.org/0.89/exa/ab.ruleml
> Loading schema document http://www.ruleml.org/0.89/xsd/b.xsd
> Loading schema document http://www.ruleml.org/0.89/xsd/a.xsd
> Finished loading schema document http://www.ruleml.org/0.89/xsd/a.xsd
> Finished loading schema document http://www.ruleml.org/0.89/xsd/b.xsd
> Validation error on line 5 column 4 of 
> http://www.ruleml.org/0.89/exa/ab.ruleml:
> In content of element <body>: The content model does not 
> allow element <x>
> to appear here.
> Expected: {http://www.ruleml.org/0.89/xsd}y
> Validation error on line 7 column 8 of 
> http://www.ruleml.org/0.89/exa/ab.ruleml:
> One or more validation errors were reported
> Validation of source document failed
> 
> 
Received on Friday, 1 April 2005 14:34:37 GMT

Subscribe to the Stylus Scoop newsletter for helpful XML tips and tutorials.
Email
First Name
Last Name
Company

Download Stylus Studio 6 XML Enterprise Edition

Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.