[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