- From: (unknown charset) John Utz <utz@singingfish.com>
- Date: Sat, 16 Feb 2002 14:05:14 -0800 (PST)
- To: (unknown charset) "G. Ken Holman" <gkholman@CraneSoftwrights.com>
- cc: (unknown charset) xmlschema-dev@w3.org
Ken and Steve; On Sat, 16 Feb 2002, G. Ken Holman wrote: > At 2002-02-16 11:29 -0500, I wrote: > >At 2002-02-16 08:14 -0500, Steve Baker wrote: > >>Sorry John: the all in my last post should of course have been a > >>sequence. IE > >> > >><?xml version = "1.0" encoding = "UTF-8"?> > >><xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> > >> > >> <xsd:element name='A' type='xsd:anyType'/> > >> <xsd:element name='B' type='xsd:anyType'/> > >> > >> <xsd:element name='seqAB'> > >> <xsd:complexType> > >> <xsd:sequence> > >> <xsd:group ref='seqABgroup' minOccurs='0' maxOccurs='unbounded'/> > >> <xsd:element ref='A' minOccurs='0'/> > >> </xsd:sequence> > >> </xsd:complexType> > >> </xsd:element> > >> > >> <xsd:group name='seqABgroup'> > >> <xsd:sequence> > >> <xsd:element ref='A'/> > >> <xsd:element ref='B'/> > >> </xsd:sequence> > >> </xsd:group> > >> > >></xsd:schema> > > > >When I try the above with the sequence (A, B, A) as requested by the > >original poster, the MSV tool complains that it is missing a B. > > > >I think this is because of "Schema Component Constraint: Unique Particle > >Attribution" in that you cannot have "A" selectable both from the group > >and from the subsequent following standalone element. This is because the > >validator jumps into the group on the detection of the second "A" and is, > >therefore, looking for the mandatory following "B". > > I tried a RELAX-NG version of your suggestion, Steve, and it works just > fine because there is no such unambiguous particle rule in RELAX-NG. I've > copied it below. > > So your proposal is sound, except for the ambiguity constraint ... the > wording in XML Schema Part 1 reads: > > A content model must be formed such that during ·validation· of an > element information item sequence, the particle contained directly, > indirectly or ·implicitly· therein with which to attempt to > ·validate· each item in the sequence in turn can be uniquely > determined without examining the content or attributes of that item, > and without any information about the items in the remainder of the > sequence. > > I still can't figure out a way around this ambiguity to meet the original > poster's needs. this is exactly the hair pulling part of the problem! :-) This alternating sequence is a key paradigm in MPEG7's method of describing some 'stuff'. The original implementer probably used XMLSpy to develop the schema. i was one of the first people who tried to use the MPEG7 schema with xerces-j. xerces-j 2 found a problem with Uniform Particle Attribution in the current version of the MPEG7 schema. The author trimmed it down to a minimal example and shared it with me in the hope that i might be able to fix it. I looked at it and said 'that shouldnt be too hard'. That was a week ago. :-) so, i tried your (steve's) suggested implementation and i get the same error that the original had: bash-2.05$ java dom.ASBuilder -f -a Alt3.xsd -i Alt3.xml [Error] :-1:-1: cos-nonambig: ("":A) and ("":A){0-1} (or elements from their substitution group) violate "Unique Particle Attribution". this supports Ken's assertion. (The schema and xml are called Alt3 because this is the third independent suggestion that i have tried ) ironically, another individual suggested a mixed mode XMLSchema/RELAX-NG description ( i wonder if he knows Ken? :-) ) that would probably cause a lot of discontent at this time. :-) it's astounding that this is working out to be this hard! but that's software..... again, i cant say enough about my level of appreciation for the time you guys have put into looking at this. if an answer is found for this, it would be a great FAQ entry somewhere... > ..................... Ken > > T:\ftemp>type utz1.xml > <seqAB> > <A/> > </seqAB> > T:\ftemp>type utz2.xml > <seqAB> > <A/> > <B/> > </seqAB> > T:\ftemp>type utz3.xml > <seqAB> > <A/> > <B/> > <A/> > </seqAB> > T:\ftemp>type utz4.xml > <seqAB> > <A/> > <B/> > <A/> > <B/> > </seqAB> > T:\ftemp>type utz5.xml > <seqAB> > <B/> > <A/> > <B/> > </seqAB> > T:\ftemp>type utz6.xml > <seqAB> > <A/> > <B/> > <B/> > <A/> > <B/> > </seqAB> > T:\ftemp>type holman.rnx > start = element seqAB > { > ( > element A { empty }, > element B { empty } > )*, > element A { empty }? > } > > T:\ftemp>rnx holman.rnx utz1.xml utz2.xml utz3.xml utz4.xml utz5.xml utz6.xml > start parsing a grammar. > validating utz1.xml > the document is valid. > -------------------------------------- > validating utz2.xml > the document is valid. > -------------------------------------- > validating utz3.xml > the document is valid. > -------------------------------------- > validating utz4.xml > the document is valid. > -------------------------------------- > validating utz5.xml > Error at line:2, column:7 of file:/T:/ftemp/utz5.xml > tag name "B" is not allowed. Possible tag names are: <A> > > the document is NOT valid. > -------------------------------------- > validating utz6.xml > Error at line:4, column:7 of file:/T:/ftemp/utz6.xml > tag name "B" is not allowed. Possible tag names are: <A> > > the document is NOT valid. > > T:\ftemp> > > > -- > Upcoming: 3-days XSLT/XPath and/or 2-days XSLFO - Feb 18-22, 2002 > > G. Ken Holman mailto:gkholman@CraneSoftwrights.com > Crane Softwrights Ltd. http://www.CraneSoftwrights.com/x/ > Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (Fax:-0995) > ISBN 0-13-065196-6 Definitive XSLT & XPath > ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath > ISBN 1-894049-07-1 Practical Formatting Using XSLFO > XSL/XML/DSSSL/SGML/OmniMark services, books(electronic, printed), > articles, training(instructor-live,Internet-live,web/CD,licensed) > Next public training: 2002-02-18,21,27,03-04,05,06,11,15, > - 04-08,09,10,11,05-06,07,09,10,06-04,07,10,11,13,14 > >
Received on Saturday, 16 February 2002 17:06:01 UTC