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


Bill de hÓra wrote:
. Full structures with all the other attribute
> stuff attached.

Bah, typos in the last, sorry. Anyway this seems to work:

   namespace local = ""
   default namespace ns1 = "http://www.example.com"

   start = anyWithNS
   anyWithNS =
     element grammar {
       attribute * { text }*,
       (text | HasNS)*
     }
   HasNS =
     element * - (local:* | ns1:*) {
       attribute * - (local:* | ns1:*) { text }*,
       (text | HasNS)*
    }

or,

   <?xml version="1.0"?>
   <grammar
     xmlns="http://relaxng.org/ns/structure/1.0"
     >
     <start>
       <ref name="anyWithNS"/>
     </start>

     <define name="anyWithNS">
       <element name="grammar" ns="http://www.example.com">
         <zeroOrMore>
           <attribute>
             <anyName>
             </anyName>
           </attribute>
         </zeroOrMore>
          <zeroOrMore>
            <choice>
              <text/>
              <ref name="HasNS" />
            </choice>
          </zeroOrMore>
       </element>
     </define>
     <define name="HasNS">
       <element>
         <anyName >
           <except>
             <nsName ns=""/>
               <nsName ns="http://www.example.com"/>
           </except>
         </anyName >
         <zeroOrMore>
           <attribute>
             <anyName>
               <except>
                 <nsName ns="" />
                 <nsName ns="http://www.example.com" />
               </except>
             </anyName>
           </attribute>
         </zeroOrMore>
         <zeroOrMore>
           <choice>
             <text/>
             <ref name="HasNS" />
           </choice>
          </zeroOrMore>
       </element>
     </define>
   </grammar>

Bill de hÓra

-- 
Technical Architect
Propylon
http://www.propylon.com


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