<?xml version = "1.0" encoding = "utf-8"?>
<?xml-stylesheet href="/pool/rng_ht.xslt" type="application/xml"?>
<!-- file KLEIDER/web/src/aktuell/redirects.rng -->
<!--
2014-07-12 Mehrere Texte zu einer URL
2015-04-26 Element kleid
-->
<grammar
  xmlns   = "http://relaxng.org/ns/structure/1.0"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  ns      = "http://herbaer.de/xmlns/20140430/redirects/"
>

<info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>redirects.rng</title>
  <subtitle>Sprechende URLs</subtitle>
  <date>2014-07-12</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</info>

<define name = "foreign_att">
  <d:para>Attribute anderer XML-Namensräume</d:para>
  <zeroOrMore>
    <attribute>
      <anyName>
        <except>
          <nsName ns = ""/>
          <nsName ns = "http://herbaer.de/xmlns/20140430/redirects/"/>
        </except>
      </anyName>
    </attribute>
  </zeroOrMore>
</define>

<define name = "anything">
  <d:para>Beliebiger Inhalt</d:para>
  <zeroOrMore>
    <choice>
      <element>
        <anyName/>
        <ref name = "anything"/>
      </element>
      <attribute>
        <anyName/>
      </attribute>
      <text/>
    </choice>
  </zeroOrMore>
</define>

<define name = "foreign_el">
  <d:para>Elemente anderer XML-Namensräume</d:para>
  <zeroOrMore>
    <element>
      <anyName>
        <except>
          <nsName ns = "http://herbaer.de/xmlns/20140430/redirects/"/>
        </except>
      </anyName>
      <ref name = "anything"/>
    </element>
  </zeroOrMore>
</define>

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

<define name = "el_redirects">
  <d:para>Wurzelelement</d:para>
  <element name = "redirects">
    <ref name = "foreign_att"/>
    <interleave>
      <ref name = "foreign_el"/>
      <zeroOrMore>
        <ref name = "el_meta"/>
      </zeroOrMore>
      <oneOrMore>
        <ref name = "el_redirect"/>
      </oneOrMore>
    </interleave>
  </element>
</define><!-- el_redirects -->

<define name = "el_meta">
  <d:para>Meta-Daten zur der Zusammenstellung der sprechenden URL</d:para>
  <element name = "meta">
    <ref name = "foreign_att"/>
    <ref name = "att_name"/>
    <text/>
  </element>
</define>

<define name = "att_name">
  <d:para>Bestimmt die Bedeutung eines meta-Elements</d:para>
  <d:variablelist>
    <d:varlistentry>
      <d:term><d:literal>title</d:literal></d:term>
      <d:listitem>
        <d:para>
Die Überschrift über dem Hauptinhalt
        </d:para>
      </d:listitem>
    </d:varlistentry>
    <d:varlistentry>
      <d:term><d:literal>sideimage</d:literal></d:term>
      <d:listitem>
        <d:para>
URL des (Hintergrund-)Bildes der Seitenleiste
        </d:para>
      </d:listitem>
    </d:varlistentry>
  </d:variablelist>
  <attribute name = "name">
    <choice>
      <value>title</value>
      <value>sideimage</value>
    </choice>
  </attribute>
</define>

<define name = "el_redirect">
  <d:para>Daten zu einer sprechenden URL</d:para>
  <element name = "redirect">
    <ref name = "foreign_att"/>
    <interleave>
      <ref name = "foreign_el"/>
      <oneOrMore>
        <ref name = "el_text"/>
      </oneOrMore>
      <ref name = "el_relurl"/>
      <zeroOrMore>
        <ref name = "el_kleid"/>
      </zeroOrMore>
    </interleave>
  </element>
</define><!-- el_redirect -->

<define name = "el_text">
  <d:para>
Der Text zu einer sprechenden URL.
Hieraus wird die URL erzeugt.
  </d:para>
  <element name = "text">
    <ref name = "foreign_att"/>
    <text/>
  </element>
</define><!-- el_text -->

<define name = "el_relurl">
  <d:para>
Das Ziel der Umleitung der sprechenden URL.
  </d:para>
  <element name = "relurl">
    <ref name = "foreign_att"/>
    <data type = "data"/>
  </element>
</define><!-- el_relurl -->

<define name = "el_kleid">
  <d:para>
Kennung eines Kleidungsteils
  </d:para>
  <element name = "kleid">
    <ref name = "foreign_att"/>
    <data type = "word"/>
  </element>
</define><!-- el_kleid -->

</grammar>
<!-- end of file KLEIDER/web/src/aktuell/redirects.rng -->
