<?xml version="1.0"?>
<grammar
    xmlns="http://relaxng.org/ns/structure/1.0"
    xmlns:mal="http://projectmallard.org/1.0/"
    ns="http://projectmallard.org/1.0/">

<start>
  <ref name="mal_page"/>
</start>

<define name="mal_page">
  <element name="page">
    <ref name="mal_page_attr"/>
    <optional>
      <ref name="mal_info"/>
    </optional>
    <ref name="mal_block_title"/>
    <optional>
      <ref name="mal_block_subtitle"/>
    </optional>
    <zeroOrMore>
      <choice>
        <ref name="mal_block"/>
        <ref name="mal_links"/>
      </choice>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_section"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_links"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_page_attr">
  <group>
    <attribute name="id">
      <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
    </attribute>
    <optional>
      <attribute name="type">
        <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <ref name="mal_attr_version"/>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_section">
  <element name="section">
    <ref name="mal_section_attr"/>
    <optional>
      <ref name="mal_info"/>
    </optional>
    <ref name="mal_block_title"/>
    <optional>
      <ref name="mal_block_subtitle"/>
    </optional>
    <zeroOrMore>
      <choice>
        <ref name="mal_block"/>
        <ref name="mal_links"/>
      </choice>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_section"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_links"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_section_attr">
  <group>
    <attribute name="id">
      <data type="ID" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
    </attribute>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info">
  <element name="info">
    <ref name="mal_info_attr"/>
    <ref name="mal_info_content"/>
  </element>
</define>

<define name="mal_info_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_content">
  <interleave>
    <optional>
      <ref name="mal_info_desc"/>
    </optional>
    <zeroOrMore>
      <ref name="mal_info_credit"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_info_license"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_info_link"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_info_title"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_info_revision"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_external"/>
    </zeroOrMore>
  </interleave>
</define>

<define name="mal_info_credit">
  <element name="credit">
    <ref name="mal_info_credit_attr"/>
    <ref name="mal_info_credit_content"/>
  </element>
</define>

<define name="mal_info_credit_attr">
  <group>
    <optional>
      <attribute name="type">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_credit_content">
  <interleave>
    <ref name="mal_info_name"/>
    <zeroOrMore>
      <ref name="mal_info_email"/>
    </zeroOrMore>
    <optional>
      <ref name="mal_info_years"/>
    </optional>
    <zeroOrMore>
      <ref name="mal_external"/>
    </zeroOrMore>
  </interleave>
</define>

<define name="mal_info_link">
  <element name="link">
    <ref name="mal_info_link_attr"/>
    <zeroOrMore>
      <ref name="mal_info_link_content"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_info_link_attr">
  <group>
    <attribute name="type">
      <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
    </attribute>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <oneOrMore>
      <ref name="mal_attr_link"/>
    </oneOrMore>
    <optional>
      <attribute name="group">
        <text/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_link_content">
  <ref name="mal_external"/>
</define>

<define name="mal_info_title">
  <element name="title">
    <ref name="mal_info_title_attr"/>
    <ref name="mal_info_title_inline"/>
  </element>
</define>

<define name="mal_info_title_attr">
  <group>
    <attribute name="type">
      <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
    </attribute>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="role">
        <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_title_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_info_license">
  <element name="license">
    <ref name="mal_info_license_attr"/>
    <oneOrMore>
      <ref name="mal_info_license_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_info_license_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="href">
        <text/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_license_content">
  <ref name="mal_block"/>
</define>

<define name="mal_info_desc">
  <element name="desc">
    <ref name="mal_info_desc_attr"/>
    <ref name="mal_info_desc_inline"/>
  </element>
</define>

<define name="mal_info_desc_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_desc_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_info_revision">
  <element name="revision">
    <ref name="mal_info_revision_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <optional>
      <ref name="mal_block_desc"/>
    </optional>
    <zeroOrMore>
      <ref name="mal_info_revision_content"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_info_revision_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="version">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="docversion">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="pkgversion">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="date">
        <data type="date" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="status">
        <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_revision_content">
  <ref name="mal_external"/>
</define>

<define name="mal_info_years">
  <element name="years">
    <ref name="mal_info_years_attr"/>
    <ref name="mal_info_years_inline"/>
  </element>
</define>

<define name="mal_info_years_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_years_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_info_email">
  <element name="email">
    <ref name="mal_info_email_attr"/>
    <ref name="mal_info_email_inline"/>
  </element>
</define>

<define name="mal_info_email_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_email_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_info_name">
  <element name="name">
    <ref name="mal_info_name_attr"/>
    <ref name="mal_info_name_inline"/>
  </element>
</define>

<define name="mal_info_name_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_info_name_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_links">
  <element name="links">
    <ref name="mal_links_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <zeroOrMore>
      <ref name="mal_links_content"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_links_attr">
  <group>
    <attribute name="type">
      <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
    </attribute>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="groups">
        <text/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_links_content">
  <ref name="mal_external"/>
</define>

<define name="mal_block">
  <choice>
    <ref name="mal_block_elements"/>
    <element>
      <anyName>
        <except>
          <nsName ns="http://projectmallard.org/1.0/"/>
          <nsName ns=""/>
        </except>
      </anyName>
      <zeroOrMore>
        <attribute>
          <anyName/>
          <text/>
        </attribute>
      </zeroOrMore>
      <interleave>
        <zeroOrMore>
          <ref name="mal_external"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="mal_block_elements"/>
        </zeroOrMore>
      </interleave>
    </element>
  </choice>
</define>

<define name="mal_block_elements">
  <choice>
    <ref name="mal_block_code"/>
    <ref name="mal_block_comment"/>
    <ref name="mal_block_example"/>
    <ref name="mal_block_figure"/>
    <ref name="mal_block_list"/>
    <ref name="mal_block_listing"/>
    <ref name="mal_block_media"/>
    <ref name="mal_block_note"/>
    <ref name="mal_block_p"/>
    <ref name="mal_block_quote"/>
    <ref name="mal_block_screen"/>
    <ref name="mal_block_steps"/>
    <ref name="mal_block_synopsis"/>
    <ref name="mal_block_terms"/>
    <ref name="mal_block_tree"/>
    <ref name="mal_table"/>
  </choice>
</define>

<define name="mal_block_attr">
  <empty/>
</define>

<define name="mal_block_code">
  <element name="code">
    <ref name="mal_block_code_attr"/>
    <ref name="mal_block_code_inline"/>
  </element>
</define>

<define name="mal_block_code_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="mime">
        <text/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_code_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_block_example">
  <element name="example">
    <ref name="mal_block_example_attr"/>
    <oneOrMore>
      <ref name="mal_block_example_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_example_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_example_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_media">
  <element name="media">
    <ref name="mal_block_media_attr"/>
    <zeroOrMore>
      <ref name="mal_block_media_content"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_block_media_attr">
  <group>
    <optional>
      <attribute name="type">
        <choice>
          <value>image</value>
          <value>video</value>
          <value>audio</value>
          <value>application</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="mime">
        <text/>
      </attribute>
    </optional>
    <attribute name="src">
      <text/>
    </attribute>
    <optional>
      <attribute name="height">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="width">
        <text/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_media_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_p">
  <element name="p">
    <ref name="mal_block_p_attr"/>
    <ref name="mal_block_p_inline"/>
  </element>
</define>

<define name="mal_block_p_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_p_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_block_screen">
  <element name="screen">
    <ref name="mal_block_screen_attr"/>
    <ref name="mal_block_screen_inline"/>
  </element>
</define>

<define name="mal_block_screen_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="mime">
        <text/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_screen_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_block_quote">
  <element name="quote">
    <ref name="mal_block_quote_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <optional>
      <ref name="mal_block_cite"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_quote_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_quote_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_quote_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_comment">
  <element name="comment">
    <ref name="mal_block_comment_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <optional>
      <ref name="mal_block_cite"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_comment_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_comment_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_comment_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_figure">
  <element name="figure">
    <ref name="mal_block_figure_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <optional>
      <ref name="mal_block_desc"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_figure_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_figure_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_figure_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_listing">
  <element name="listing">
    <ref name="mal_block_listing_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <optional>
      <ref name="mal_block_desc"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_listing_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_listing_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_listing_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_note">
  <element name="note">
    <ref name="mal_block_note_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_note_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_note_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_note_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_synopsis">
  <element name="synopsis">
    <ref name="mal_block_synopsis_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <optional>
      <ref name="mal_block_desc"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_synopsis_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_synopsis_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_synopsis_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_list">
  <element name="list">
    <ref name="mal_block_list_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_list_item"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_list_attr">
  <group>
    <optional>
      <attribute name="type">
        <data type="NMTOKEN" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_list_item">
  <element name="item">
    <ref name="mal_block_list_item_attr"/>
    <oneOrMore>
      <ref name="mal_block_list_item_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_list_item_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_list_item_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_steps">
  <element name="steps">
    <ref name="mal_block_steps_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_steps_item"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_steps_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_steps_item">
  <element name="item">
    <ref name="mal_block_steps_item_attr"/>
    <oneOrMore>
      <ref name="mal_block_steps_item_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_steps_item_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_steps_item_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_terms">
  <element name="terms">
    <ref name="mal_block_terms_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_terms_item"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_terms_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_terms_item">
  <element name="item">
    <ref name="mal_block_terms_item_attr"/>
    <oneOrMore>
      <ref name="mal_block_title"/>
    </oneOrMore>
    <oneOrMore>
      <ref name="mal_block_terms_item_content"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_terms_item_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_terms_item_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_tree">
  <element name="tree">
    <ref name="mal_block_tree_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <oneOrMore>
      <ref name="mal_block_tree_item"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_block_tree_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_tree_item">
  <element name="item">
    <ref name="mal_block_tree_item_attr"/>
    <ref name="mal_block_tree_item_inline"/>
    <zeroOrMore>
      <ref name="mal_block_tree_item"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_block_tree_item_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_tree_item_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_table">
  <element name="table">
    <ref name="mal_table_attr"/>
    <optional>
      <ref name="mal_block_title"/>
    </optional>
    <optional>
      <ref name="mal_block_desc"/>
    </optional>
    <optional>
      <choice>
        <oneOrMore>
          <ref name="mal_table_col"/>
        </oneOrMore>
        <oneOrMore>
          <ref name="mal_table_colgroup"/>
        </oneOrMore>
      </choice>
    </optional>
    <choice>
      <oneOrMore>
        <ref name="mal_table_tr"/>
      </oneOrMore>
      <group>
        <optional>
          <ref name="mal_table_thead"/>
        </optional>
        <oneOrMore>
          <ref name="mal_table_tbody"/>
        </oneOrMore>
        <optional>
          <ref name="mal_table_tfoot"/>
        </optional>
      </group>
    </choice>
  </element>
</define>

<define name="mal_table_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="frame">
        <choice>
          <value>all</value>
          <value>none</value>
          <list>
            <zeroOrMore>
              <choice>
                <value>top</value>
                <value>bottom</value>
                <value>left</value>
                <value>right</value>
              </choice>
            </zeroOrMore>
          </list>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="rules">
        <choice>
          <value>all</value>
          <value>groups</value>
          <value>none</value>
          <list>
            <zeroOrMore>
              <choice>
                <value>rows</value>
                <value>rowgroups</value>
                <value>cols</value>
                <value>colgroups</value>
              </choice>
            </zeroOrMore>
          </list>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="shade">
        <choice>
          <value>all</value>
          <value>groups</value>
          <value>none</value>
          <list>
            <zeroOrMore>
              <choice>
                <value>rows</value>
                <value>rowgroups</value>
                <value>cols</value>
                <value>colgroups</value>
              </choice>
            </zeroOrMore>
          </list>
        </choice>
      </attribute>
    </optional>
    <ref name="mal_block_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_col">
  <element name="col">
    <ref name="mal_table_col_attr"/>
  </element>
</define>

<define name="mal_table_col_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_colgroup">
  <element name="colgroup">
    <ref name="mal_table_colgroup_attr"/>
    <zeroOrMore>
      <ref name="mal_table_col"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_table_colgroup_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_tr">
  <element name="tr">
    <ref name="mal_table_tr_attr"/>
    <zeroOrMore>
      <ref name="mal_table_td"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_table_tr_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_thead">
  <element name="thead">
    <ref name="mal_table_thead_attr"/>
    <oneOrMore>
      <ref name="mal_table_tr"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_table_thead_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_tbody">
  <element name="tbody">
    <ref name="mal_table_tbody_attr"/>
    <oneOrMore>
      <ref name="mal_table_tr"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_table_tbody_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_tfoot">
  <element name="tfoot">
    <ref name="mal_table_tfoot_attr"/>
    <oneOrMore>
      <ref name="mal_table_tr"/>
    </oneOrMore>
  </element>
</define>

<define name="mal_table_tfoot_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_td">
  <element name="td">
    <ref name="mal_table_td_attr"/>
    <zeroOrMore>
      <ref name="mal_table_td_content"/>
    </zeroOrMore>
  </element>
</define>

<define name="mal_table_td_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="rowspan">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="colspan">
        <text/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_table_td_content">
  <ref name="mal_block"/>
</define>

<define name="mal_block_title">
  <element name="title">
    <ref name="mal_block_title_attr"/>
    <ref name="mal_block_title_inline"/>
  </element>
</define>

<define name="mal_block_title_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_title_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_block_subtitle">
  <element name="subtitle">
    <ref name="mal_block_subtitle_attr"/>
    <ref name="mal_block_subtitle_inline"/>
  </element>
</define>

<define name="mal_block_subtitle_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_subtitle_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_block_desc">
  <element name="desc">
    <ref name="mal_block_desc_attr"/>
    <ref name="mal_block_desc_inline"/>
  </element>
</define>

<define name="mal_block_desc_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_desc_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_block_cite">
  <element name="cite">
    <ref name="mal_block_cite_attr"/>
    <ref name="mal_block_cite_inline"/>
  </element>
</define>

<define name="mal_block_cite_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="date">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="href">
        <text/>
      </attribute>
    </optional>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_block_cite_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline">
  <interleave>
    <zeroOrMore>
      <ref name="mal_inline_app"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_cmd"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_code"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_em"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_file"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_gui"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_guiseq"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_input"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_key"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_keyseq"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_link"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_media"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_output"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_span"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_sys"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_var"/>
    </zeroOrMore>
    <zeroOrMore>
      <element>
        <anyName>
          <except>
            <nsName ns="http://projectmallard.org/1.0/"/>
            <nsName ns=""/>
          </except>
        </anyName>
        <zeroOrMore>
          <attribute>
            <anyName/>
            <text/>
          </attribute>
        </zeroOrMore>
        <ref name="mal_inline"/>
      </element>
    </zeroOrMore>
    <optional>
      <text/>
    </optional>
  </interleave>
</define>

<define name="mal_inline_attr">
  <empty/>
</define>

<define name="mal_inline_app">
  <element name="app">
    <ref name="mal_inline_app_attr"/>
    <ref name="mal_inline_app_inline"/>
  </element>
</define>

<define name="mal_inline_app_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_app_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_code">
  <element name="code">
    <ref name="mal_inline_code_attr"/>
    <ref name="mal_inline_code_inline"/>
  </element>
</define>

<define name="mal_inline_code_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="mime">
        <text/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_code_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_cmd">
  <element name="cmd">
    <ref name="mal_inline_cmd_attr"/>
    <ref name="mal_inline_cmd_inline"/>
  </element>
</define>

<define name="mal_inline_cmd_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="mime">
        <text/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_cmd_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_output">
  <element name="output">
    <ref name="mal_inline_output_attr"/>
    <ref name="mal_inline_output_inline"/>
  </element>
</define>

<define name="mal_inline_output_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_output_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_em">
  <element name="em">
    <ref name="mal_inline_em_attr"/>
    <ref name="mal_inline_em_inline"/>
  </element>
</define>

<define name="mal_inline_em_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_em_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_file">
  <element name="file">
    <ref name="mal_inline_file_attr"/>
    <ref name="mal_inline_file_inline"/>
  </element>
</define>

<define name="mal_inline_file_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_file_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_gui">
  <element name="gui">
    <ref name="mal_inline_gui_attr"/>
    <ref name="mal_inline_gui_inline"/>
  </element>
</define>

<define name="mal_inline_gui_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_gui_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_guiseq">
  <element name="guiseq">
    <ref name="mal_inline_guiseq_attr"/>
    <ref name="mal_inline_guiseq_inline"/>
  </element>
</define>

<define name="mal_inline_guiseq_attr">
  <group>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_guiseq_inline">
  <interleave>
    <oneOrMore>
      <ref name="mal_inline_gui"/>
    </oneOrMore>
    <text/>
  </interleave>
</define>

<define name="mal_inline_link">
  <element name="link">
    <ref name="mal_inline_link_attr"/>
    <ref name="mal_inline_link_inline"/>
  </element>
</define>

<define name="mal_inline_link_attr">
  <group>
    <oneOrMore>
      <ref name="mal_attr_link"/>
    </oneOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="role">
        <text/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_link_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_media">
  <element name="media">
    <ref name="mal_inline_media_attr"/>
    <ref name="mal_inline_media_inline"/>
  </element>
</define>

<define name="mal_inline_media_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="type">
        <choice>
          <value>image</value>
          <value>video</value>
          <value>audio</value>
          <value>application</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="mime">
        <text/>
      </attribute>
    </optional>
    <attribute name="src">
      <text/>
    </attribute>
    <optional>
      <attribute name="height">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="width">
        <text/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_media_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_keyseq">
  <element name="keyseq">
    <ref name="mal_inline_keyseq_attr"/>
    <ref name="mal_inline_keyseq_inline"/>
  </element>
</define>

<define name="mal_inline_keyseq_attr">
  <group>
    <optional>
      <attribute name="type">
        <choice>
          <value>combo</value>
          <value>sequence</value>
        </choice>
      </attribute>
    </optional>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_keyseq_inline">
  <interleave>
    <zeroOrMore>
      <ref name="mal_inline_key"/>
    </zeroOrMore>
    <zeroOrMore>
      <ref name="mal_inline_keyseq"/>
    </zeroOrMore>
    <text/>
  </interleave>
</define>

<define name="mal_inline_key">
  <element name="key">
    <ref name="mal_inline_key_attr"/>
    <ref name="mal_inline_key_inline"/>
  </element>
</define>

<define name="mal_inline_key_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_key_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_span">
  <element name="span">
    <ref name="mal_inline_span_attr"/>
    <ref name="mal_inline_span_inline"/>
  </element>
</define>

<define name="mal_inline_span_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_span_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_sys">
  <element name="sys">
    <ref name="mal_inline_sys_attr"/>
    <ref name="mal_inline_sys_inline"/>
  </element>
</define>

<define name="mal_inline_sys_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_sys_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_input">
  <element name="input">
    <ref name="mal_inline_input_attr"/>
    <ref name="mal_inline_input_inline"/>
  </element>
</define>

<define name="mal_inline_input_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_input_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_inline_var">
  <element name="var">
    <ref name="mal_inline_var_attr"/>
    <ref name="mal_inline_var_inline"/>
  </element>
</define>

<define name="mal_inline_var_attr">
  <group>
    <zeroOrMore>
      <ref name="mal_attr_link"/>
    </zeroOrMore>
    <optional>
      <attribute name="style">
        <data type="NMTOKENS" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
      </attribute>
    </optional>
    <ref name="mal_inline_attr"/>
    <zeroOrMore>
      <ref name="mal_attr_external"/>
    </zeroOrMore>
  </group>
</define>

<define name="mal_inline_var_inline">
  <ref name="mal_inline"/>
</define>

<define name="mal_external">
  <element>
    <anyName>
      <except>
        <nsName ns="http://projectmallard.org/1.0/"/>
        <nsName ns=""/>
      </except>
    </anyName>
    <zeroOrMore>
      <attribute>
        <anyName/>
        <text/>
      </attribute>
    </zeroOrMore>
    <interleave>
      <zeroOrMore>
        <ref name="mal_anything"/>
      </zeroOrMore>
      <optional>
        <text/>
      </optional>
    </interleave>
  </element>
</define>

<define name="mal_anything">
  <element>
    <anyName/>
    <zeroOrMore>
      <attribute>
        <anyName/>
        <text/>
      </attribute>
    </zeroOrMore>
    <interleave>
      <zeroOrMore>
        <ref name="mal_anything"/>
      </zeroOrMore>
      <optional>
        <text/>
      </optional>
    </interleave>
  </element>
</define>

<define name="mal_attr_external">
  <attribute>
    <anyName>
      <except>
        <nsName ns="http://projectmallard.org/1.0/"/>
        <nsName ns=""/>
      </except>
    </anyName>
    <text/>
  </attribute>
</define>

<define name="mal_attr_version">
  <attribute name="version">
    <text/>
  </attribute>
</define>

<define name="mal_attr_link">
  <choice>
    <attribute name="xref">
      <text/>
    </attribute>
    <attribute name="href">
      <text/>
    </attribute>
    <attribute name="action">
      <text/>
    </attribute>
  </choice>
</define>

<define name="mal_attr_mal_link">
  <group>
    <optional>
      <attribute name="mal:xref">
        <text/>
      </attribute>
    </optional>
    <optional>
      <attribute name="mal:action">
        <text/>
      </attribute>
    </optional>
  </group>
</define>

</grammar>
