<?xml version = "1.0" encoding = "utf-8"?>
<!-- file KLEIDER/web/src/localization/resstruct.rng -->
<?xml-stylesheet href="/pool/rng_ht.xslt" type="application/xml"?>
<grammar
  xmlns   = "http://relaxng.org/ns/structure/1.0"
  xmlns:d = "http://herbaer.de/xmlns/20051201/doc"
  ns      = "http://herbaer.de/xmlns/20150127/resstruct#"
>
<!--
2015-07-02 machine
2015-08-15 moved
-->
<info xmlns="http://herbaer.de/xmlns/20051201/doc">
  <title>resstruct.rng</title>
  <subtitle>Verschachtelungen in der Übersetzung</subtitle>
  <date>2015-01-27</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/20150127/resstruct#"/>
        </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/20150127/resstruct#"/>
        </except>
      </anyName>
      <ref name = "anything"/>
    </element>
  </zeroOrMore>
</define>

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

<define name = "el_translation">
  <d:para>Wurzelelement</d:para>
  <element name = "translation">
    <ref name = "foreign_att"/>
    <interleave>
      <ref name = "foreign_el"/>
      <ref name = "el_to"/>
      <optional>
        <ref name = "el_machine"/>
      </optional>
      <oneOrMore>
        <ref name = "el_struct"/>
      </oneOrMore>
      <oneOrMore>
        <ref name = "el_text"/>
      </oneOrMore>
      <oneOrMore>
        <ref name = "el_error"/>
      </oneOrMore>
    </interleave>
  </element>
</define><!-- el_translation -->

<define name = "el_to">
  <d:para>Die Zielsprache, in die der Text übersetzt wurde</d:para>
  <element name = "to">
    <ref name = "foreign_att"/>
    <data type = "simpleword"/>
  </element>
</define><!-- el_to -->

<define name = "el_machine">
  <d:para>Name der Übersetzungsmaschine, falls maschinell übersetzt</d:para>
  <element name = "machine">
    <ref name = "foreign_att"/>
    <data type = "text"/>
  </element>
</define><!-- el_machine -->

<define name = "el_struct">
  <d:para>
Eine Verschachtelung mit Teiltexten und Verweisen auf andere Textteile.
  </d:para>
  <element name = "struct">
    <ref name = "foreign_att"/>
    <ref name = "att_id"/>
    <interleave>
      <ref name = "foreign_el"/>
      <zeroOrMore>
        <ref name = "el_ref"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name = "el_part"/>
      </zeroOrMore>
      <zeroOrMore>
        <ref name = "el_moved"/>
      </zeroOrMore>
    </interleave>
  </element>
</define><!-- el_struct -->

<define name = "el_text">
  <d:para>Ein übersetzter Text</d:para>
  <element name = "text">
    <ref name = "foreign_att"/>
    <ref name = "att_id"/>
    <text/>
  </element>
</define><!-- el_text -->

<define name = "el_error">
  <d:para>ID einer Verschachtelung, die nicht "aufgelöst" werden konnte</d:para>
  <element name = "error">
    <ref name = "foreign_att"/>
    <data type = "simpleword"/>
  </element>
</define><!-- el_error -->

<define name = "att_id">
  <d:para>Die Kennung eines Textes oder einer Verschachtelung</d:para>
  <attribute name = "id">
    <data type = "simpleword"/>
  </attribute>
</define><!-- att_id -->

<define name = "el_ref">
  <d:para>Verweis auf einen Text innerhalb einer Verschachtelung</d:para>
  <element name = "ref">
    <ref name = "foreign_att"/>
    <data type = "simpleword"/>
  </element>
</define><!-- el_ref -->

<define name = "el_part">
  <d:para>Teiltext in einer Verschachtelung</d:para>
  <element name = "part">
    <ref name = "foreign_att"/>
    <text/>
  </element>
</define><!-- el_part -->

<define name = "el_moved">
  <d:para>Verweis auf ein verschobenes Element innerhalb einer Verschachtelung</d:para>
  <element name = "moved">
    <ref name = "foreign_att"/>
    <data type = "simpleword"/>
  </element>
</define><!-- el_moved -->

</grammar>
<!-- end of file KLEIDER/web/src/localization/resstruct.rng -->
