OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

relax-ng message

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


Subject: Re: QNames



> I wonder whether this already hits 80-20.  Since namespaces typically
> correspond to information islands, elements of a namespace share one
> top-level element or a sequence of such top-level elements.  See my
> rewrite of RSS in RELAX NG.

Here's a rewrite of your rewrite using <div>.  This completely avoids
duplicate specification of the namespace URI.

<!--

Rewrite in RELAX NG
MURATA Makoto
June 4, 2001

Modified to use div by James Clark

-->

<!--

Draft TREX Grammar for RSS 1.0
Leigh Dodds
10/1/2001

-->

<grammar xmlns="http://relaxng.org/ns/struct/0.9">

   <div namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

      <start>
         <element name="RDF">
            <ref name="Channel" />
            <optional>
               <ref name="Image" />
            </optional>
            <oneOrMore>
               <ref name="Item" />
            </oneOrMore>
            <optional>
               <ref name="Textinput" />
            </optional>
         </element>
      </start>

      <define name="About">
         <attribute name="about"/>
      </define>

      <define name="Resource">
         <attribute name="resource"/>
      </define>

      <define name="Seq">
         <element name="Seq">
            <oneOrMore>
               <element name="li">
                  <attribute name="resource"/>
                  <empty/>
               </element>
            </oneOrMore>
         </element>
      </define>

   </div>

   <div namespace="http://purl.org/rss/1.0/">

      <define name="Channel">
         <element name="channel">
            <ref name="About"/>
            <interleave>
               <ref name="Title"/>
               <ref name="Link"/>
               <ref name="Description"/>
               <optional>
                  <ref name="Image.ref"/>
               </optional>
               <ref name="Items" />
               <optional>
                  <ref name="Textinput.ref"/>
               </optional>
            </interleave>
         </element>
      </define>

      <define name="Image">
         <element name="image">
            <ref name="About"/>
            <interleave>
               <ref name="Title"/>
               <ref name="Url"/>
               <ref name="Link"/>
            </interleave>
         </element>
      </define>

      <define name="Image.ref">
         <element name="image">
            <ref name="Resource"/>
            <empty/>
         </element>
      </define>

      <define name="Item">
         <element name="item">
            <ref name="About"/>
            <interleave>
               <ref name="Title"/>
               <ref name="Link"/>
               <optional>
                  <ref name="Description"/>
               </optional>
            </interleave>
         </element>
      </define>

      <define name="Items">
         <element name="items">
            <ref name="Seq"/>
         </element>
      </define>

      <define name="Textinput">
         <element name="textinput">
            <ref name="About"/>
            <interleave>
               <ref name="Title"/>
               <ref name="Description"/>
               <ref name="Name"/>
               <ref name="Link"/>
            </interleave>
         </element>
      </define>

      <define name="Textinput.ref">
         <element name="textinput">
            <ref name="Resource"/>
         </element>
      </define>

      <define name="Title">
         <element name="title">
            <anyString/>
         </element>
      </define>

      <define name="Url">
         <element name="url">
            <anyString/>
         </element>
      </define>

      <define name="Link">
         <element name="link">
            <anyString/>
         </element>
      </define>

      <define name="Description">
         <element name="description">
            <anyString/>
         </element>
      </define>

      <define name="Name">
         <element name="name">
            <anyString/>
         </element>
      </define>

   </div>

</grammar>




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


Powered by eList eXpress LLC