<?xml version = "1.0" encoding = "utf-8"?>
<?xml-stylesheet href="/pool/rng_ht.xslt" type="application/xml"?>
<!-- file KLEIDER/web/src/addstory/imgselect.rng -->
<!--
  Auswahl von Bildern
  "http://herbaer.de/xmlns/20100205/imgselect"
  2010-02-05 Herbert Schiemann <h.schiemann@herbaer.de>
  Borkener Str. 167, 46284 Dorsten, Germany
  GPL Version 2 oder neuer
  Jede Gewährleistung ist ausgeschlossen.

  Das Schema folgt den folgenden Richtlinien:
  - Jedes Attribut und jedes Element wird in einem
    <define>-Element spezifiziert
  - Jedes <define>-Element spezifiziert höchstens ein Attribut oder Element
  - Die Namen der Muster ("Pattern"), die ein Attribut spezifizieren,
    beginnen mit "att_".
  - Die Namen der Muster, die ein Element spezifizieren,
    beginnen mit "el_".
  - Die Dokumentation ist in den define-Elementen enthalten und benutzt
    DocBook-XML-artige Markierungen des Namensraums
    http://herbaer.de/xmlns/20051201/doc

2012-01-31 image-Element mit Wert 0 für verworfenes Bild
-->
<grammar
  xmlns   = "http://relaxng.org/ns/structure/1.0"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  ns      = "http://herbaer.de/xmlns/20100205/imgselect"
>

<d:info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>imgselect.rng</title>
  <subtitle>Auswahl von Bilddateien</subtitle>
  <date>2010-02-05</date>
  <author>
    <personname>
      <firstname>Herbert</firstname>
      <surname>Schiemann</surname>
    </personname>
    <email>h.schiemann@herbaer.de</email>
  </author>
</d:info>

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

<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_att">
  <d:para>
Attribute anderer XML-Namensräume
  </d:para>
  <zeroOrMore>
    <attribute>
      <anyName>
        <except>
          <nsName ns = ""/>
          <nsName ns = "http://herbaer.de/xmlns/20100205/imgselect"/>
        </except>
      </anyName>
    </attribute>
  </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/20100205/imgselect"/>
        </except>
      </anyName>
      <ref name = "anything"/>
    </element>
  </zeroOrMore>
</define>

<define name = "el_imgselect">
  <d:para>
Das XML-Wurzelelement der Bildauswahl
  </d:para>
  <element name = "imgselect">
    <ref name = "foreign_att"/>
    <interleave>
      <optional>
        <ref name = "el_meta"/>
      </optional>
      <optional>
        <ref name = "el_images"/>
      </optional>
      <optional>
        <ref name = "el_selections"/>
      </optional>
      <optional>
        <ref name = "el_numfiles"/>
      </optional>
      <optional>
        <ref name = "el_mode"/>
      </optional>
      <ref name="foreign_el"/>
    </interleave>
  </element>
</define>

<define name = "el_meta">
  <d:para>
"Meta-Daten" zur Bildauswahl
  </d:para>
  <element name = "meta">
    <ref name = "foreign_att"/>
    <interleave>
      <optional>
        <ref name = "el_srcfile"/>
      </optional>
      <optional>
        <ref name = "el_filename"/>
      </optional>
      <optional>
        <ref name = "el_time"/>
      </optional>
      <ref name="foreign_el"/>
    </interleave>
  </element>
</define>

<define name = "el_srcfile">
  <d:para>
Name oder Dateipfad einer Quelldatei (Bildergeschichte)
  </d:para>
  <element name = "srcfile">
    <ref name = "foreign_att"/>
    <text/>
  </element>
</define>

<define name = "el_filename">
  <d:para>
(Ursprünglicher) Dateiname oder Dateipfad
  </d:para>
  <element name = "filename">
    <ref name = "foreign_att"/>
    <text/>
  </element>
</define>

<define name = "el_time">
  <d:para>
Erstelldatum und -zeit
  </d:para>
  <element name = "time">
    <ref name = "foreign_att"/>
    <!--
    <data type = "datetime"/>
    -->
    <data type = "string"/>
  </element>
</define>

<define name = "el_images">
  <d:para>
Die ausgewählten oder verworfenen Bilder
  </d:para>
  <element name = "images">
    <ref name = "foreign_att"/>
    <interleave>
      <zeroOrMore>
        <ref name = "el_image"/>
      </zeroOrMore>
      <ref name="foreign_el"/>
    </interleave>
  </element>
</define>

<define name = "el_image">
  <d:para>
Ein Bild mit der Anzahl, wie oft das Bild in den Eingabedateien ausgewählt wurde.
Der Wert 0 bezeichnet verworfene Bilder.
Eine Zahl größer als 1 ist möglich, wenn das Bild in den Eingabedateien
mehrfach genannt wird.
  </d:para>
  <element name = "image">
    <ref name = "att_src"/>
    <ref name = "foreign_att"/>
    <data type = "integer"/>
  </element>
</define>

<define name = "att_src">
  <d:para>
Die Kennung (Basis-Dateiname) eines Bildes
  </d:para>
  <attribute name = "src"/>
</define>

<define name = "el_selections">
  <d:para>
Zusammenstellung der Auswahlkriterien
  </d:para>
  <element name = "selections">
    <ref name = "foreign_att"/>
    <interleave>
      <zeroOrMore>
        <ref name = "el_selection"/>
      </zeroOrMore>
      <ref name="foreign_el"/>
    </interleave>
  </element>
</define>

<define name = "el_selection">
  <d:para>
Ein Auswahlkriterium und Daten über seine Anwendung
  </d:para>
  <element name = "selection">
    <ref name = "foreign_att"/>
    <interleave>
      <ref name = "el_regex"/>
      <ref name = "el_probability"/>
      <optional>
        <ref name = "el_matches"/>
      </optional>
      <optional>
        <ref name = "el_selected"/>
      </optional>
      <ref name="foreign_el"/>
    </interleave>
  </element>
</define>

<define name = "el_regex">
  <d:para>
Der reguläre Ausdruck zu einem Auswahlkriterium
  </d:para>
  <element name = "regex">
    <ref name = "foreign_att"/>
    <text/>
  </element>
</define>

<define name = "el_probability">
  <d:para>
Die Auswahl-Wahrscheinlichkeit zu einem Auswahlkriterium,
eine Zahl im Bereich von 0 bis 1.0
  </d:para>
  <element name = "probability">
    <ref name = "foreign_att"/>
    <data type = "number"/>
  </element>
</define>

<define name = "el_matches">
  <d:para>
Wie oft war der reguläre Ausdruck des Auswahlkriterium erfüllt?
  </d:para>
  <element name = "matches">
    <ref name = "foreign_att"/>
    <data type = "integer"/>
  </element>
</define>

<define name = "el_selected">
  <d:para>
Wie oft wurde ein Bild (pseudo-zufällig) ausgewählt,
nachdem der reguläre Ausdruck erfüllt war?
  </d:para>
  <element name = "selected">
    <ref name = "foreign_att"/>
    <data type = "integer"/>
  </element>
</define>

<define name = "el_numfiles">
  <d:para>
Anzahl der Quell-Dateien, die in die Bildauswahl eingegangen sind
  </d:para>
  <element name = "numfiles">
    <ref name = "foreign_att"/>
    <data type = "integer"/>
  </element>
</define>

<define name = "el_mode">
  <d:para>
Auswahlmodus
  </d:para>
  <element name = "mode">
    <ref name = "foreign_att"/>
    <data type = "string"/>
  </element>
</define>

</grammar>
<!-- end offile KLEIDER/web/src/addstory/imgselect.rng -->
