[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Radu Cernuta" <radu.cernuta@g...>
  • To: "Jeff Lowery" <jlowery@m...>
  • Date: Wed, 7 Feb 2007 10:56:23 +0100

Sorry, I've overlooked the <optional> element. Rule 4.12 comes first in this case and adds a <group>, then 7.15. The basic idea stays the same: you cannot have several roots in an XML document.


2007/2/7, Radu Cernuta <radu.cernuta@g...>:
It's not about recursion. This won't work because the reference you make in the <start> element is resolved to zeroOrMore elements and a document cannot have several roots.

See RELAX NG specification:

Simplification, section 4.15 zeroOrMore element
http://relaxng.org/spec-20011203.html#IDAGHZR

Restrictions, section 7.15 start element
http://relaxng.org/spec-20011203.html#context-start


2007/2/7, Jeff Lowery < jlowery@m...>:
Thanks for your help. I'm thankful for what functionality there is in
RELAX NG, trust me.

Just for kicks I tried self-referencing back to the schema, but
recursion is not allowed (ah well).

Test.rng :

<?xml version="1.0"?>
<grammar
  xmlns="http://relaxng.org/ns/structure/1.0"
  ns="http://foo.org/bar">

    <start>
        <ref name="children"></ref>
    </start>

    <define name="children">
        <zeroOrMore>
            <element>
                <anyName>
                    <except>
                        <nsName/>
                    </except>
                </anyName>
                <ref name="children"></ref>
            </element>
        </zeroOrMore>
        <optional>
            <ref name="interestingElements"></ref>
        </optional>
    </define>

    <define name="interestingElements">
        <choice>
            <externalRef href=""Test.rng"/>        </choice>
    </define>

</grammar>





[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member