Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


RE: Both extending and restricting with

From: "Michael Kay" <mike@--------.--->
To: "'Hirtle, David'" <David.Hirtle@--------.--.-->, <xmlschema-dev@--.--->
Date: 4/1/2005 4:34:00 PM
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@w... 
> [mailto:xmlschema-dev-request@w...] On Behalf Of Hirtle, David
> Sent: 01 April 2005 15:10
> To: xmlschema-dev@w...
> 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
> 
> 



From george@o... Fri Apr 01 14:42:51 2005
Received: from lisa.w3.org ([128.30.52.41])
	by frink.w3.org with esm


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent