199 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version='1.0'?>
 | |
| <grammar xmlns="http://relaxng.org/ns/structure/1.0"
 | |
|   datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
 | |
|   ns="http://www.iana.org/assignments">
 | |
| 
 | |
|   <define name="registryMeta">
 | |
|     <interleave>
 | |
|       <attribute name="id"><data type="ID"/></attribute>
 | |
|       <optional><element name="title"><ref name="text_with_references"/></element></optional>
 | |
|       <optional><element name="created"><ref name="genericDate"/></element></optional>
 | |
|       <optional><element name="updated"><data type="date"/></element></optional>
 | |
|       <optional><element name="registration_rule"><ref
 | |
|             name="text_with_references"/></element></optional>
 | |
|       <optional><element name="expert"><text/></element></optional>
 | |
|       <optional><element name="description"><ref name="text_with_references"/></element></optional>
 | |
|       <zeroOrMore><element name="note"><ref name="text_with_references"/></element></zeroOrMore>
 | |
|       <ref name="references"/>
 | |
|       <optional><element name="hide"><empty/></element></optional>
 | |
|       <zeroOrMore><element name="category"><text/></element></zeroOrMore>
 | |
|       <zeroOrMore><ref name="range"/></zeroOrMore>
 | |
|       <optional><ref name="file"/></optional>
 | |
|     </interleave>
 | |
|   </define>
 | |
| 
 | |
|   <define name="range">
 | |
|     <element name="range">
 | |
|        <interleave>
 | |
| 	  <element name="value"><text/></element>
 | |
| 	  <optional><element name="hex"><text/></element></optional>
 | |
| 	  <element name="registration_rule"><ref name="text_with_references"/></element>
 | |
| 	  <optional><element name="note"><ref name="text_with_references"/></element></optional>
 | |
| 	  <optional><ref name="xref"/></optional>
 | |
|        </interleave>
 | |
|     </element>
 | |
|   </define>
 | |
| 
 | |
|   <define name="people">
 | |
|     <element name="people">
 | |
|       <zeroOrMore>
 | |
|         <element name="person">
 | |
|           <attribute name="id"><data type="ID"/></attribute>
 | |
|           <optional><element name="name"><text/></element></optional>
 | |
|           <optional><element name="org"><text/></element></optional>
 | |
|           <zeroOrMore><element name="uri"><data type="anyURI"/></element></zeroOrMore>
 | |
|           <optional><element name="updated"><ref name="genericDate"/></element></optional>
 | |
|         </element>
 | |
|       </zeroOrMore>
 | |
|     </element>
 | |
|   </define>
 | |
| 
 | |
|   <define name="xref">
 | |
|     <element name="xref">
 | |
|       <optional>
 | |
|         <attribute name="lastupdated"><ref name="genericDate"/></attribute>
 | |
|       </optional>
 | |
|       <choice>
 | |
|         <group>
 | |
|           <attribute name="type"><value>uri</value></attribute>
 | |
|           <attribute name="data"><data type="anyURI"/></attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>rfc</value></attribute>
 | |
|           <attribute name="data">
 | |
|             <data type="string">
 | |
|               <param name="pattern">(rfc|bcp|std)\d+</param>
 | |
|             </data>
 | |
|           </attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>rfc-errata</value></attribute>
 | |
|           <attribute name="data"><data type="positiveInteger"/></attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>draft</value></attribute>
 | |
|           <attribute name="data">
 | |
|             <data type="string">
 | |
|               <param name="pattern">(draft|RFC)(-[a-zA-Z0-9]+)+</param>
 | |
|             </data>
 | |
|           </attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>registry</value></attribute>
 | |
|           <attribute name="data"><data type="NCName"/></attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>person</value></attribute>
 | |
|           <attribute name="data"><data type="NCName"/></attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>text</value></attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>note</value></attribute>
 | |
|           <attribute name="data"><data type="positiveInteger"/></attribute>
 | |
|         </group>
 | |
|         <group>
 | |
|           <attribute name="type"><value>unicode</value></attribute>
 | |
|           <attribute name="data">
 | |
|             <data type="string">
 | |
|               <param name="pattern">ucd\d+\.\d+\.\d+</param>
 | |
|             </data>
 | |
|           </attribute>
 | |
|         </group>
 | |
|       </choice>
 | |
|       <text/>
 | |
|     </element>
 | |
|   </define>
 | |
| 
 | |
|   <define name="references">
 | |
|     <zeroOrMore>
 | |
|       <ref name="xref"/>
 | |
|     </zeroOrMore>
 | |
|   </define>
 | |
| 
 | |
|   <define name="text_with_references">
 | |
|     <interleave>
 | |
|       <zeroOrMore>
 | |
|         <text/>
 | |
|         <optional><ref name="xref"/></optional>
 | |
|       </zeroOrMore>
 | |
|     </interleave>
 | |
|   </define>
 | |
| 
 | |
|   <define name="richText">
 | |
|     <zeroOrMore>
 | |
|       <choice>
 | |
|         <interleave>
 | |
|           <ref name="text_with_references"/>
 | |
|           <optional><element name="br"><empty/></element></optional>
 | |
|         </interleave>
 | |
|         <element name="paragraph">
 | |
|           <interleave>
 | |
|             <ref name="text_with_references"/>
 | |
|             <optional><element name="br"><empty/></element></optional>
 | |
|           </interleave>
 | |
|         </element>
 | |
|         <element name="artwork"><text/></element>
 | |
|       </choice>
 | |
|     </zeroOrMore>
 | |
|   </define>
 | |
| 
 | |
|   <define name="genericRange">
 | |
|     <data type="string">
 | |
|       <param name="pattern">(\d+|0x[\da-fA-F]+)(\s*-\s*(\d+|0x[\da-fA-F]+))?</param>
 | |
|     </data>
 | |
|   </define>
 | |
| 
 | |
|   <define name="genericDate">
 | |
|     <choice>
 | |
|       <data type="date"/>
 | |
|       <data type="gYearMonth"/>
 | |
|     </choice>
 | |
|   </define>
 | |
| 
 | |
|   <define name="hex32">
 | |
|     <data type="string">
 | |
|       <param name="pattern">0x[0-9]{8}</param>
 | |
|     </data>
 | |
|   </define>
 | |
| 
 | |
|   <define name="binary">
 | |
|     <data type="string">
 | |
|       <param name="pattern">[0-1]+</param>
 | |
|     </data>
 | |
|   </define>
 | |
| 
 | |
|   <define name="footnotes">
 | |
|     <zeroOrMore>
 | |
|       <element name="footnote">
 | |
|         <attribute name="anchor"><data type="positiveInteger"/></attribute>
 | |
|         <interleave>
 | |
|           <zeroOrMore>
 | |
|             <text/>
 | |
|             <optional><ref name="xref"/></optional>
 | |
|           </zeroOrMore>
 | |
|         </interleave>
 | |
|       </element>
 | |
|     </zeroOrMore>
 | |
|   </define>
 | |
| 
 | |
|   <define name="file">
 | |
|     <element name="file">
 | |
|       <attribute name="type">
 | |
|         <choice>
 | |
|           <value>legacy</value>
 | |
|           <value>mib</value>
 | |
|           <value>template</value>
 | |
|           <value>json</value>
 | |
|         </choice>
 | |
|       </attribute>
 | |
|       <optional>
 | |
|         <attribute name="name"/>
 | |
|       </optional>
 | |
|       <data type="anyURI"/>
 | |
|     </element>
 | |
|   </define>
 | |
| 
 | |
| </grammar>
 | 
