[
Lists Home |
Date Index |
Thread Index
]
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
|