- From: Daniel Veillard <daniel@veillard.com>
- Date: Mon, 11 Oct 2004 17:17:32 +0200
- To: "Henry S. Thompson" <ht@inf.ed.ac.uk>
- Cc: daniel@veillard.com, Jeff Rafter <lists@jeffrafter.com>, xmlschema-dev@w3.org, xml-dev@lists.xml.org
On Mon, Oct 11, 2004 at 02:56:55PM +0100, Henry S. Thompson wrote: > Right, that works fine for exponents on individual elements, but I > don't see how it works for groups. > > Here's a real example from a published schema document [1]: > > <xsd:sequence minOccurs="0" maxOccurs="1000"> > <xsd:element ref="ReferenceIdentification" minOccurs="0"/> > <xsd:element ref="Message" minOccurs="0" maxOccurs="1000"/> > </xsd:sequence> > > Or consider a (constructed) case that's tricky in a different way: > > <xsd:sequence minOccurs="2" maxOccurs="2"> > <xsd:element ref="a" minOccurs="1" maxOccurs="2"/> > <xsd:element ref="b" minOccurs="0"/> > </xsd:sequence> > > which allows _inter alia_ > > <a/><a/> > <a/><a/><a/> > <a/><a/><a/><a/> I (or Kasimier) would have to double-check how that last case is handled, but I think one need counted epsilon transitions in that case. Which has the annoying effect that the reduction of the automata to find and elimitate ambiguous branches is harder, but I think the existing epsilon elimination algorithm still work as usual, you just have to make sure the newly generated transitions reuse the same counter as the epsilon they replace. But I definitely need to double check this when I have time... Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ |
Received on Monday, 11 October 2004 15:17:46 UTC