<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: testSuite.rng,v 1.12 2003/01/29 12:24:07 jjc Exp $ -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:vrd="http://www.shlomifish.org/open-source/projects/XML-Grammar/Vered/"
xmlns:xlink="http://www.w3.org/1999/xlink"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
>
<start>
<element name="vrd:document">
<ref name="common_attrs" />
<attribute name="version">
<text />
</attribute>
<ref name="info" />
<element name="vrd:body">
<ref name="common_attrs" />
<zeroOrMore>
<element name="vrd:preface">
<ref name="section_contents" />
</element>
</zeroOrMore>
<oneOrMore>
<ref name="section" />
</oneOrMore>
</element>
</element>
</start>
<define name="global_attrs">
<optional>
<attribute name="xml:id">
<data type="ID"/>
</attribute>
</optional>
<optional>
<attribute name="xml:lang">
<data type="NCName" />
</attribute>
</optional>
</define>
<define name="common_attrs">
<ref name="global_attrs" />
<optional>
<attribute name="xlink:href">
<data type="anyURI"/>
</attribute>
</optional>
</define>
<define name="section_contents">
<ref name="global_attrs" />
<ref name="info" />
<ref name="several_paras" />
<zeroOrMore>
<ref name="section" />
</zeroOrMore>
</define>
<define name="section">
<element name="vrd:section">
<ref name="global_attrs" />
<ref name="info" />
<ref name="several_paras" />
<ref name="some_items" />
<zeroOrMore>
<ref name="section" />
</zeroOrMore>
</element>
</define>
<define name="some_items">
<zeroOrMore>
<ref name="item" />
</zeroOrMore>
</define>
<define name="item">
<element name="vrd:item">
<ref name="global_attrs" />
<ref name="info" />
<ref name="several_paras" />
<ref name="some_items" />
</element>
</define>
<define name="several_paras">
<zeroOrMore>
<choice>
<ref name="blockquote"/>
<ref name="p"/>
<ref name="ol"/>
<ref name="ul"/>
<ref name="programlisting"/>
<ref name="bad_code"/>
<ref name="code_blk"/>
</choice>
</zeroOrMore>
</define>
<define name="inside_list">
<oneOrMore>
<ref name="li" />
</oneOrMore>
</define>
<define name="ol">
<element name="vrd:ol">
<ref name="inside_list" />
</element>
</define>
<define name="ul">
<element name="vrd:ul">
<ref name="inside_list" />
</element>
</define>
<define name="blockquote">
<element name="vrd:blockquote">
<ref name="common_attrs" />
<ref name="several_paras"/>
</element>
</define>
<define name="li">
<element name="vrd:li">
<oneOrMore>
<ref name="p" />
</oneOrMore>
</element>
</define>
<define name="p">
<element name="vrd:p">
<zeroOrMore>
<choice>
<ref name="text_with_style" />
<ref name="span" />
<ref name="a" />
</choice>
</zeroOrMore>
</element>
</define>
<define name="text_with_style">
<choice>
<text />
<ref name="b" />
<ref name="i" />
<element name="vrd:cpan_self_dist">
<attribute name="d">
<text />
</attribute>
<empty />
</element>
<element name="vrd:cpan_self_mod">
<attribute name="m">
<text />
</attribute>
<empty />
</element>
<element name="vrd:cpan_mod">
<attribute name="m">
<text />
</attribute>
<text />
</element>
<element name="vrd:pdoc">
<attribute name="d">
<text />
</attribute>
<text />
</element>
<element name="vrd:pdoc_f">
<attribute name="f">
<text />
</attribute>
<text />
</element>
<element name="vrd:strong">
<text />
</element>
<element name="vrd:em">
<text />
</element>
<element name="vrd:code">
<text />
</element>
<element name="vrd:filepath">
<text />
</element>
</choice>
</define>
<define name="span">
<element name="vrd:span">
<ref name="common_attrs" />
<oneOrMore>
<ref name="text_with_style" />
</oneOrMore>
</element>
</define>
<define name="a">
<element name="vrd:a">
<ref name="global_attrs" />
<attribute name="xlink:href">
<data type="anyURI"/>
</attribute>
<oneOrMore>
<ref name="text_with_style" />
</oneOrMore>
</element>
</define>
<define name="b">
<element name="vrd:b">
<text />
</element>
</define>
<define name="i">
<element name="vrd:i">
<text />
</element>
</define>
<define name="title">
<element name="vrd:title">
<text />
</element>
</define>
<define name="code_contents">
<ref name="common_attrs" />
<attribute name="syntax">
<text/>
</attribute>
<text/>
</define>
<define name="bad_code">
<element name="vrd:bad_code">
<ref name="code_contents" />
</element>
</define>
<define name="code_blk">
<element name="vrd:code_blk">
<ref name="code_contents" />
</element>
</define>
<define name="programlisting">
<element name="vrd:programlisting">
<ref name="code_contents" />
</element>
</define>
<define name="info">
<element name="vrd:info">
<ref name="title" />
</element>
</define>
</grammar>