<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
         xmlns:rng="http://relaxng.org/ns/structure/1.0"
         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         xmlns:doc="http://nwalsh.com/xmlns/documentation"
         xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

<rng:div doc:docbook="yes" xmlns="">
<partinfo>
<releaseinfo
   role="cvs">$Id: extensions.rng,v 1.4 2003/06/22 16:45:56 nwalsh Exp $</releaseinfo>
<title>Website Extensions</title>
<productname>Website</productname>
<productnumber>2.4.1</productnumber>
<releaseinfo role="filename">extensions</releaseinfo>
<copyright>
<year>2002</year>
<year>2003</year>
<holder>Norman Walsh</holder>
</copyright>
</partinfo>

<partintro>
<para>This is the extensions module for Website.</para>

<para>Please direct all questions and comments about this schema to
Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
</partintro>
</rng:div>

<define name="local.para.class" combine="choice">
  <choice>
    <ref name="webtoc"/>
    <ref name="rss"/>
  </choice>
</define>

<define name="head">
  <element name="head">
    <ref name="title"/>
    <optional>
      <ref name="titleabbrev"/>
    </optional>
    <optional>
      <ref name="subtitle"/>
    </optional>
    <optional>
      <ref name="summary"/>
    </optional>
    <optional>
      <ref name="base"/>
    </optional>
    <optional>
      <ref name="keywords"/>
    </optional>
    <zeroOrMore>
      <choice>
        <ref name="copyright"/>
        <ref name="author"/>
        <ref name="edition"/>
        <ref name="meta"/>
        <ref name="headlink"/>
        <ref name="script"/>
        <ref name="style"/>
        <ref name="abstract"/>
        <ref name="revhistory"/>
        <ref name="rddl-resource"/>
      </choice>
    </zeroOrMore>
  </element>
</define>

<define name="meta">
  <element name="meta">
    <optional>
      <attribute name="http-equiv"/>
    </optional>
    <optional>
      <attribute name="name"/>
    </optional>
    <attribute name="content"/>
    <empty/>
  </element>
</define>

<define name="headlink">
  <element name="headlink">
    <optional>
      <attribute name="href"/>
    </optional>
    <optional>
      <attribute name="media"/>
    </optional>
    <optional>
      <attribute name="name"/>
    </optional>
    <optional>
      <attribute name="rel"/>
    </optional>
    <optional>
      <attribute name="rev"/>
    </optional>
    <optional>
      <attribute name="src"/>
    </optional>
    <optional>
      <attribute name="title"/>
    </optional>
    <optional>
      <attribute name="type"/>
    </optional>
    <empty/>
  </element>
</define>

<define name="script">
  <element name="script">
    <optional>
      <attribute name="src"/>
    </optional>
    <optional>
      <attribute name="language"/>
    </optional>
    <optional>
      <attribute name="type"/>
    </optional>
    <text/>
  </element>
</define>

<define name="style">
  <element name="style">
    <optional>
      <attribute name="src"/>
    </optional>
    <optional>
      <attribute name="type"/>
    </optional>
    <text/>
  </element>
</define>

<define name="config">
  <element name="config">
    <ref name="common.attrib"/>
    <attribute name="param"/>
    <attribute name="value"/>
    <optional>
      <attribute name="altval"/>
    </optional>
    <empty/>
  </element>
</define>

<define name="summary">
  <element name="summary">
    <ref name="common.attrib"/>
    <ref name="word.char.mix"/>
  </element>
</define>

<define name="base">
  <element name="base">
    <attribute name="href"/>
    <optional>
      <attribute name="target"/>
    </optional>
    <empty/>
  </element>
</define>

<define name="keywords">
  <element name="keywords">
    <ref name="common.attrib"/>
    <text/>
  </element>
</define>

<define name="webpage">
  <element name="webpage">
    <ref name="common.attrib"/>
    <optional>
      <attribute name="navto" a:defaultValue="yes">
        <choice>
          <value>yes</value>
          <value>no</value>
        </choice>
      </attribute>
    </optional>
    <ref name="webpage.mix"/>
  </element>
</define>

<define name="webtoc">
  <element name="webtoc">
    <ref name="common.attrib"/>
    <empty/>
  </element>
</define>

<define name="rss">
  <element name="rss">
    <ref name="common.attrib"/>
    <attribute name="feed"/>
    <empty/>
  </element>
</define>

<include href="rddl.rng"/>

<include href="forms.rng"/>

<define name="local.notation.class" combine="choice">
  <choice>
    <value>XML</value>
  </choice>
</define>

</grammar>
