- From: Hirtle, David <David.Hirtle@nrc-cnrc.gc.ca>
- Date: Mon, 4 Apr 2005 10:44:32 -0400
- To: ht@inf.ed.ac.uk
- Cc: xmlschema-dev@w3.org
Hi Henry, Thanks for the reply. There's been a little mix-up, though. I changed the file b.xsd after an earlier reply from Michael Kay, as explained in this archived message: http://lists.w3.org/Archives/Public/xmlschema-dev/2005Apr/0004.html (I should have created new files instead of editing existing ones when responding. Sorry for the confusion.) > Are you sure -- web form reports the expected error when I run it: > http://www.w3.org/2001/03/webdata/xsv?docAddrs=http%3A%2F%2Fwww.ruleml.org%2F0.89%2Fexa%2Fab.ruleml&style=xsl# That file which now validates fine with XSV uses a b.xsd with <redefine>s: <xs:redefine schemaLocation="a.xsd"> <!-- add y to body --> <xs:group name="body.content"> <xs:choice> <xs:group ref="body.content"/> <xs:element ref="y"/> </xs:choice> </xs:group> </xs:redefine> <xs:redefine schemaLocation="a.xsd"> <!-- remove x from body by restriction --> <xs:group name="body.content"> <xs:choice> <xs:element ref="y"/> </xs:choice> </xs:group> </xs:redefine> The above just doesn't seem to right to me, but this strategy seems the best supported right now (with Saxon and XSV, at least). When I sent my original message to the list, the file b.xsd only used one <redefine>: <xs:redefine schemaLocation="a.xsd"> <!-- add y to body --> <xs:group name="body.content"> <xs:choice> <xs:group ref="body.content"/> <xs:element ref="y"/> </xs:choice> </xs:group> <!-- remove x from body by restriction --> <xs:group name="body.content"> <xs:choice> <xs:element ref="y"/> </xs:choice> </xs:group> </xs:redefine> I created new files f.xsd, g.xsd (at http://www.ruleml.org/0.89/xsd) for this original example. Note that with this one <redefine>, XSV crashes: http://www.w3.org/2001/03/webdata/xsv?docAddrs=http%3A%2F%2Fwww.ruleml.org%2F0.89%2Fexa%2Ffg.ruleml&style=xsl# > The 'correct' way to do this is with _three_ files. Unfortunately XSV doesn't seem to like the three file way either: m.xsd is the same as the previous a.xsd/f.xsd n.xsd redefines m.xsd, adding in <y> o.xsd redefines n.xsd, removing <x> (again all at http://www.ruleml.org/0.89/xsd) Validating http://www.ruleml.org/0.89/exa/mno.ruleml results in a crash: http://www.w3.org/2001/03/webdata/xsv?docAddrs=http%3A%2F%2Fwww.ruleml.org%2F0.89%2Fexa%2Fmno.ruleml&style=xsl# I wish the spec were clearer on this. Do you still recommend the 3 file approach? Normally in RuleML each schema represents a meaningful sublanguage, so having extra "intermediate" schemas is less than ideal, but if it's the only way to replace one element by another I guess we have no choice. Thanks again, David -----Original Message----- From: ht@inf.ed.ac.uk [mailto:ht@inf.ed.ac.uk] Sent: Saturday, April 02, 2005 10:43 AM To: Hirtle, David Cc: xmlschema-dev@w3.org Subject: Re: Both extending and restricting with <redefine> "Hirtle, David" <David.Hirtle@nrc-cnrc.gc.ca> writes: > 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. Are you sure -- web form reports the expected error when I run it: http://www.w3.org/2001/03/webdata/xsv?docAddrs=http%3A%2F%2Fwww.ruleml.org%2F0.89%2Fexa%2Fab.ruleml&style=xsl# > 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? I can see why this works, but I don't _think_ it should. The 'correct' way to do this is with _three_ files. ht -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh Half-time member of W3C Team 2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440 Fax: (44) 131 650-4587, e-mail: ht@inf.ed.ac.uk URL: http://www.ltg.ed.ac.uk/~ht/ [mail really from me _always_ has this .sig -- mail without it is forged spam]
Received on Monday, 4 April 2005 14:44:41 UTC