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


James Clark wrote:

> > I have to admit I like none of my alternatives.
> 
> Of your alternatives the one I dislike the least is the first (which is
> really no different from the second as far as the RELAX NG spec is
> concerned).

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 some more alternatives:

I can live with all of them.

> E)
> Like you example 1, ie as now but name attributes are not allowed to be
> qualified, but allow <grammar> elements to group definitions using <div>
> elements as in RELAX NG.  The div elements don't change the semantics of
> the enclosed definitions, but, as well as being useful for annotations
> and structuring large grammars, they can have common attributes
> including "namespace".  Then for a mixed namespace grammar you could use
> the following technique:

By the way, one reason that RELAX Core has <div> is to make clear the 
scope of annotation.  Given <div><annotation>....</annotation> whatever whatever </div>, 
this annotation is about all subordinates of this <div> element.


> Of these, I prefer E, although I still much prefer QNames...

We can also try to extend the namespace rec.  If an instance 
document explicitly indicates which attribute contains QName, 
any general-purpose XML program can successfully rename prefixes 
without causing any problems.

Cheers,

Makoto

---------------------------------
<!--

Rewrite in RELAX NG
MURATA Makoto
June 4, 2001

-->

<!--

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

-->

<grammar  namespace="http://purl.org/rss/1.0/"
   xmlns="http://relaxng.org/ns/struct/0.9">

   <start>
      <element name="RDF" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
         <ref name="Channel" />
         <optional>
            <ref name="Image" />
         </optional>
         <oneOrMore>
            <ref name="Item" />
         </oneOrMore>
         <optional>
            <ref name="Textinput" />
         </optional>
      </element>
   </start>
   

   <define name="Channel">
      <element name="channel">
         <attribute name="about" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#" />
         <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">
         <attribute name="about" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
         <interleave>
            <ref name="Title"/>
            <ref name="Url"/>
            <ref name="Link"/>
         </interleave>
      </element>   
   </define>

   <define name="Image.ref">
      <element name="image">
         <attribute name="resource" 
namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
         <empty/>
      </element>   
   </define>
   
   <define name="Item">
      <element name="item">
         <attribute name="about" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
         
         <interleave>
            <ref name="Title"/>
            <ref name="Link"/>
            <optional>
               <ref name="Description"/>
            </optional>
         </interleave>            
      </element>
   </define>

   <define name="Items">
      <element name="items">
         <element name="Seq" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
            <oneOrMore>
               <element name="li">
                  <attribute name="resource"/>            
                  <empty/>
               </element>
            </oneOrMore>               
         </element>
      </element>
   </define>
   
   <define name="Textinput">
      <element name="textinput">
         <attribute name="about" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#" />
         <interleave>
            <ref name="Title"/>
            <ref name="Description"/>
            <ref name="Name"/>
            <ref name="Link"/>
         </interleave>
      </element>
   </define>

   <define name="Textinput.ref">
      <element name="textinput">
         <attribute name="resource" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
/>      
      </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>
   
</grammar>


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


Powered by eList eXpress LLC