a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
320 lines
7.7 KiB
XML
320 lines
7.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- $Id: nvdl.rnc,v 1.5 2005/01/03 01:49:50 makoto Exp makoto $ -->
|
|
<grammar xmlns:nvdl="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" ns="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<start>
|
|
<element name="rules">
|
|
<optional>
|
|
<ref name="schemaType"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="trigger"/>
|
|
</zeroOrMore>
|
|
<choice>
|
|
<zeroOrMore>
|
|
<ref name="rule"/>
|
|
</zeroOrMore>
|
|
<group>
|
|
<attribute name="startMode">
|
|
<data type="NCName"/>
|
|
</attribute>
|
|
<oneOrMore>
|
|
<ref name="mode"/>
|
|
</oneOrMore>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</start>
|
|
<define name="trigger">
|
|
<element name="trigger">
|
|
<attribute name="ns">
|
|
<data type="string"/>
|
|
</attribute>
|
|
<attribute name="name">
|
|
<data type="NCName"/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
<define name="mode">
|
|
<element name="mode">
|
|
<attribute name="name">
|
|
<data type="NCName"/>
|
|
</attribute>
|
|
<zeroOrMore>
|
|
<ref name="includedMode"/>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<ref name="rule"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="includedMode">
|
|
<element name="mode">
|
|
<optional>
|
|
<attribute name="name">
|
|
<data type="NCName"/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="includedMode"/>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<ref name="rule"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="rule">
|
|
<choice>
|
|
<element name="namespace">
|
|
<attribute name="ns">
|
|
<data type="string"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="wildcard">
|
|
<data type="string">
|
|
<param name="maxLength">1</param>
|
|
</data>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="ruleModel"/>
|
|
</element>
|
|
<element name="anyNamespace">
|
|
<ref name="ruleModel"/>
|
|
</element>
|
|
</choice>
|
|
</define>
|
|
<define name="ruleModel">
|
|
<optional>
|
|
<attribute name="match">
|
|
<ref name="elementsOrAttributes"/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name="actions"/>
|
|
</define>
|
|
<define name="elementsOrAttributes">
|
|
<list>
|
|
<choice>
|
|
<group>
|
|
<value>elements</value>
|
|
<value>attributes</value>
|
|
</group>
|
|
<group>
|
|
<value>attributes</value>
|
|
<value>elements</value>
|
|
</group>
|
|
<value>elements</value>
|
|
<value>attributes</value>
|
|
</choice>
|
|
</list>
|
|
</define>
|
|
<define name="actions">
|
|
<choice>
|
|
<ref name="cancelAction"/>
|
|
<group>
|
|
<zeroOrMore>
|
|
<ref name="noResultAction"/>
|
|
</zeroOrMore>
|
|
<choice>
|
|
<ref name="noResultAction"/>
|
|
<ref name="resultAction"/>
|
|
</choice>
|
|
<zeroOrMore>
|
|
<ref name="noResultAction"/>
|
|
</zeroOrMore>
|
|
</group>
|
|
</choice>
|
|
</define>
|
|
<define name="cancelAction">
|
|
<element name="cancelNestedActions">
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="noResultAction">
|
|
<choice>
|
|
<element name="validate">
|
|
<optional>
|
|
<ref name="schemaType"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="message"/>
|
|
<ref name="option"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
<ref name="schema"/>
|
|
<ref name="modeUsage"/>
|
|
</element>
|
|
<element>
|
|
<choice>
|
|
<name>allow</name>
|
|
<name>reject</name>
|
|
</choice>
|
|
<zeroOrMore>
|
|
<ref name="message"/>
|
|
</zeroOrMore>
|
|
<ref name="modeUsage"/>
|
|
</element>
|
|
</choice>
|
|
</define>
|
|
<define name="schema">
|
|
<choice>
|
|
<attribute name="schema">
|
|
<data type="anyURI"/>
|
|
</attribute>
|
|
<element name="schema">
|
|
<choice>
|
|
<text/>
|
|
<ref name="foreignElement"/>
|
|
</choice>
|
|
</element>
|
|
</choice>
|
|
</define>
|
|
<define name="message">
|
|
<choice>
|
|
<attribute name="message"/>
|
|
<element name="message">
|
|
<interleave>
|
|
<text/>
|
|
<attribute name="xml:lang"/>
|
|
</interleave>
|
|
</element>
|
|
</choice>
|
|
</define>
|
|
<define name="resultAction">
|
|
<element>
|
|
<choice>
|
|
<name>attach</name>
|
|
<name>attachPlaceHolder</name>
|
|
<name>unwrap</name>
|
|
</choice>
|
|
<zeroOrMore>
|
|
<ref name="message"/>
|
|
</zeroOrMore>
|
|
<ref name="modeUsage"/>
|
|
</element>
|
|
</define>
|
|
<define name="option">
|
|
<element name="option">
|
|
<attribute name="name">
|
|
<data type="anyURI"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="arg"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="mustSupport">
|
|
<data type="boolean"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="modeUsage">
|
|
<optional>
|
|
<choice>
|
|
<attribute name="useMode">
|
|
<data type="NCName"/>
|
|
</attribute>
|
|
<ref name="nestedMode"/>
|
|
</choice>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<element name="context">
|
|
<attribute name="path">
|
|
<ref name="path"/>
|
|
</attribute>
|
|
<optional>
|
|
<choice>
|
|
<attribute name="useMode">
|
|
<data type="NCName"/>
|
|
</attribute>
|
|
<ref name="nestedMode"/>
|
|
</choice>
|
|
</optional>
|
|
</element>
|
|
</zeroOrMore>
|
|
</define>
|
|
<define name="nestedMode">
|
|
<element name="mode">
|
|
<zeroOrMore>
|
|
<ref name="includedMode"/>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<ref name="rule"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="schemaType">
|
|
<attribute name="schemaType">
|
|
<ref name="mediaType"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="mediaType">
|
|
<a:documentation>5.1 of RFC 2045 allows <any (US-ASCII) CHAR except SPACE, CTLs,
|
|
or tspecials>, where
|
|
|
|
tspecials := "(" / ")" / "<" / ">" / "@" /
|
|
"," / ";" / ":" / "\" / <">
|
|
"/" / "[" / "]" / "?" / "="
|
|
</a:documentation>
|
|
<data type="string">
|
|
<param name="pattern">\s*[0-9A-Za-z!#$%&'\*\+\-\.\^_`\{\|\}~]*\\[0-9A-Za-z!#$%&'\*\+\-\.\^_`\{\|\}~]*\s*</param>
|
|
</data>
|
|
</define>
|
|
<define name="path">
|
|
<data type="string">
|
|
<param name="pattern">\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*(\|\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*)*</param>
|
|
</data>
|
|
</define>
|
|
<define name="foreignElement">
|
|
<element>
|
|
<anyName>
|
|
<except>
|
|
<nsName/>
|
|
</except>
|
|
</anyName>
|
|
<zeroOrMore>
|
|
<attribute>
|
|
<anyName/>
|
|
</attribute>
|
|
</zeroOrMore>
|
|
<mixed>
|
|
<zeroOrMore>
|
|
<ref name="anyElement"/>
|
|
</zeroOrMore>
|
|
</mixed>
|
|
</element>
|
|
</define>
|
|
<define name="anyElement">
|
|
<element>
|
|
<anyName/>
|
|
<zeroOrMore>
|
|
<attribute>
|
|
<anyName/>
|
|
</attribute>
|
|
</zeroOrMore>
|
|
<mixed>
|
|
<zeroOrMore>
|
|
<ref name="anyElement"/>
|
|
</zeroOrMore>
|
|
</mixed>
|
|
</element>
|
|
</define>
|
|
<define name="foreignAttribute">
|
|
<attribute>
|
|
<anyName>
|
|
<except>
|
|
<nsName/>
|
|
<nsName ns=""/>
|
|
</except>
|
|
</anyName>
|
|
</attribute>
|
|
</define>
|
|
<define name="foreign">
|
|
<zeroOrMore>
|
|
<ref name="foreignAttribute"/>
|
|
</zeroOrMore>
|
|
<zeroOrMore>
|
|
<ref name="foreignElement"/>
|
|
</zeroOrMore>
|
|
</define>
|
|
</grammar>
|