[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: RelaxNG question


relaxng anyname
Tim Bray wrote:

> Dare Obasanjo wrote:
> 
>> Anyway the point is that there are XML vocabularies that have this 
>> characteristic which unfortunately cannot be described by any of the 
>> popular XML schema languages. 
> 
> 
> I'm probably missing something, but it seems on the face of it that you 
> can disallow non-namespaced names in RelaxNG.
> 
> namespace NoNS = ""
> 
> HasNS = element * - ( NoNS:* )
> {
>   attribute * { text }*,
>   mixed { HasNS* }
> }
> 
> element package { mixed HasNS* }



Not sure that'll work. I get a syntax error for the last line there, 
but the HasNS structure blows out to:

     <define name="HasNS">
       <element>
         <anyName>
           <except>
             <nsName ns=""/>
           </except>
         </anyName>
         <zeroOrMore>
           <attribute>
             <anyName/>
           </attribute>
         </zeroOrMore>
         <mixed>
           <zeroOrMore>
             <ref name="HasNS"/>
           </zeroOrMore>
         </mixed>
       </element>
   </define>

[sorry, I'm not great with the rnc]

which allows children to be in the parent namespace against the 
fragments I'll playing with. I changed it to include the specd namespace

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


and blew this out:

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

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

which I think stops non-ns names (why I am doing this? ;) and the 
specified ns on the parent. Full structures with all the other 
attribute stuff attached.

Bill de hÓra

-- 
Technical Architect
Propylon
http://www.propylon.com
<?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="inverseNS" />
         </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>
namespace local = ""
default namespace ns1 = "http://www.example.com"

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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.