<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
         xmlns:x="http://www.w3.org/1999/xhtml">

  <x:p>Checks exclusions applying to the ruby element.
    This schema is intended to be used in addition to a schema that
    includes ruby.  An appropriate namespace for ruby should be supplied
    to check validity.</x:p>

  <start>
    <ref name="normalElement"/>
  </start>

  <define name="normalElement">
    <element>
      <anyName>
        <except>
          <name>ruby</name>
        </except>
      </anyName>
      <ref name="normalContent"/>
    </element>
  </define>

  <define name="normalContent">
    <zeroOrMore>
      <choice>
        <ref name="normalElement"/>
        <ref name="rubyElement"/>
        <ref name="anyAttribute"/>
        <text/>
      </choice>
    </zeroOrMore>
  </define>

  <define name="rubyElement">
    <element name="ruby">
      <ref name="rubyContent"/>
    </element>
  </define>

  <define name="rubyContent">
    <zeroOrMore>
      <choice>
        <element>
          <anyName>
            <except>
              <name>ruby</name>
            </except>
          </anyName>
          <ref name="rubyContent"/>
        </element>
        <ref name="anyAttribute"/>
        <text/>
      </choice>
    </zeroOrMore>
  </define>

  <define name="anyAttribute">
    <attribute>
      <anyName/>
    </attribute>
  </define>

</grammar>
