You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.5 KiB
151 lines
3.5 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
|
|
<define name="features">
|
|
<element name="features">
|
|
<ref name="attlist.features"/>
|
|
<oneOrMore>
|
|
<ref name="category"/>
|
|
</oneOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.features" combine="interleave">
|
|
<empty/>
|
|
</define>
|
|
<define name="category">
|
|
<element name="category">
|
|
<ref name="attlist.category"/>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="feature"/>
|
|
<ref name="category"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.category" combine="interleave">
|
|
<attribute name="name"/>
|
|
</define>
|
|
<define name="feature">
|
|
<element name="feature">
|
|
<ref name="attlist.feature"/>
|
|
<optional>
|
|
<ref name="summary"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="responsible"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.feature" combine="interleave">
|
|
<optional>
|
|
<attribute name="status" a:defaultValue="todo">
|
|
<choice>
|
|
<value>inprogress</value>
|
|
<value>todo</value>
|
|
<value>done</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="target"/>
|
|
</define>
|
|
<define name="responsible">
|
|
<element name="responsible">
|
|
<ref name="attlist.responsible"/>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.responsible" combine="interleave">
|
|
<optional>
|
|
<attribute name="name"/>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="email"/>
|
|
</optional>
|
|
</define>
|
|
<define name="summary">
|
|
<element name="summary">
|
|
<ref name="attlist.summary"/>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<text/>
|
|
<ref name="i"/>
|
|
<ref name="a"/>
|
|
<ref name="b"/>
|
|
<ref name="em"/>
|
|
<ref name="strong"/>
|
|
<ref name="br"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.summary" combine="interleave">
|
|
<empty/>
|
|
</define>
|
|
<define name="i">
|
|
<element name="i">
|
|
<ref name="attlist.i"/>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.i" combine="interleave">
|
|
<empty/>
|
|
</define>
|
|
<define name="b">
|
|
<element name="b">
|
|
<ref name="attlist.b"/>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.b" combine="interleave">
|
|
<empty/>
|
|
</define>
|
|
<define name="em">
|
|
<element name="em">
|
|
<ref name="attlist.em"/>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.em" combine="interleave">
|
|
<empty/>
|
|
</define>
|
|
<define name="strong">
|
|
<element name="strong">
|
|
<ref name="attlist.strong"/>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.strong" combine="interleave">
|
|
<empty/>
|
|
</define>
|
|
<define name="br">
|
|
<element name="br">
|
|
<ref name="attlist.br"/>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.br" combine="interleave">
|
|
<empty/>
|
|
</define>
|
|
<define name="a">
|
|
<element name="a">
|
|
<ref name="attlist.a"/>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
<define name="attlist.a" combine="interleave">
|
|
<optional>
|
|
<attribute name="href"/>
|
|
</optional>
|
|
</define>
|
|
<define name="attlist.a" combine="interleave">
|
|
<optional>
|
|
<attribute name="title"/>
|
|
</optional>
|
|
</define>
|
|
<start>
|
|
<choice>
|
|
<ref name="features"/>
|
|
</choice>
|
|
</start>
|
|
</grammar>
|