CIB job technischer Leitfaden (DE)

15. XML-Schema

In diesem Abschnitt ist der Stand vom 06.09.2005 des CIB job Schemas für Auftragsdateien und Auftragsergebnisdateien im XML-Format abgedruckt. Durch die umfangreiche Kommentierung dient dies zugleich als Dokumentation und Implementierungsspezifikation für die zugehörigen Programmteile im CIB documentserver und auch in der Kundenanwendung.

Das aktuelle Schema kann jederzeit bezogen werden unter https://www.cib.de/schemas/job/1.5/cibjob.xsd.

<?xml version="1.0" encoding="UTF-8"?>
<!--
   CIB job XML Schema 1.5 für CIB job ab Version 1.6.x.

   (c) CIB software GmbH 2013
   
   de: EINFÜHRUNG:
   Dieses Schema beschreibt formal die XML Struktur einer CIB job Auftragsdatei
   sowie Auftragsergebnisdatei. Sie enthält umfangreiche Kommentare zu den
   einzelnen verwendeten Elementen, so daß sie gleichzeitig als Dokumentation
   und Implementierungsvorgabe dient.
   en: INTRODUCTION:
   This schema describes formal the XML structure from a CIB job jobfile as well as
   job result file. It contains large comments to the single used elements, so they
   can seen as documentation and impenenationrule at the same time. 
  
   de: INHALT:
   Abschnitt 1: Wurzelement für Aufträge und Auftragsergebnisse.
   Abschnitt 2: Elemente für Aufträge.
   Abschnitt 3: Elemente für Auftragsergebnisse.
   en: CONTENT:
   Chapter 1: Root element for jobs and job results.
   Chapter 2: elements for jobs.
   Chapter 3: elements for job results.
  
   de: Es werden explizite <xs:complexType> mit Namen definiert und schrittweise
   zusammengesetzt. Die verfügbaren Properties werden zunächst aufgrund
   ihrer Vielzahl nicht validiert. Insbesondere ist so eine Erweiterung der
   Funktionalität der CIB docgen möglich, ohne das Schema zu verändern.
   en: It will be explicite defined <xs:complexType> with names and composed
   stepwise. The available properties will not be validated by reason of
   their plurality. In particular, an extenstion of the functionality of the
   CIB docgen is possible, without changing the schema.
-->
 
<xs:schema
   xmlns:xs="http://www.w3.org/2001/XMLSchema"    targetNamespace="http://www.cib.de/schemas/job/1.5"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.cib.de/schemas/job/1.5"    elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.5">
  
<!-- Machine readable documentation in several languages -->
<xs:annotation>
   <xs:documentation xml:lang="de">
          Schema für Auftragsdateien und Auftragsergebnisdateien. Mit diesem Schema kann
          das Comod-Element validiert werden.
   </xs:documentation>
   <xs:documentation xml:lang="en">
          Schema for job files and job-result files. This schema allows the validation
          of the Comod element.
   </xs:documentation>
</xs:annotation>
 
 
 
<!-- ABSCHNITT 1: Wurzelelement für Aufträge und Auftragsergebnisdateien
   en: CHAPTER 1: root element for jobs und job-result descriptors -->
 
<!-- Element <Comod>:
   de: Wurzel-Element für CIB job (trennt Auftragsdaten von eventuellen Nutzdaten).
   Fügen Sie einen <Comod>-Element an beliebiger Stelle in Ihrem Auftrags-XML
   hinzu, allerdings nur einen einzigen. Sie können das vorliegende Schema zur
   Validierung des Comod-Elements benutzen, indem Sie es dort referenzieren:
   en: Root element for CIB job (seperates job-data from possible reference-data).
   Add a <Comod>-Element at any postion in your job-XML, but only one. You
   can use the present schema for validation of the Comod-elements by referencing
   there.
   <root>
          <cibjob:Comod xmlns:cibjob="http://www.cib.de/schemas/job/<version>"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                  xsi:schemaLocation="www.cib.de/schemas/job/<version> cibjob.xsd">
          ...
          </cibjob:Comod>
          <!- - Ihre Daten - - >
          <data xmlns="Ihr Schema">
          ...
          </data>
   </root>
-->
<xs:element name="Comod" type="ComodType"/>
 
<!-- User data shall be presentable in arbitrary layout -->
<xs:complexType name="UserData">
  <xs:sequence>
    <xs:any />
  </xs:sequence>
</xs:complexType>
 
<!-- Element <Comod>:
   de: Das Comod-Element enthält im Fall von Auftragsdateien Standardeinstellungen
   (defaults) und Jobs (jobs). Im Fall von Auftragsergebnisdateien stattdessen nur
   die Jobergebnisse (job-results). In beiden Fällen kann angegeben werden, auf
   welche Schemaversion sich das Comod-Element bezieht und welche Anwendung
   und Anwendungsversion das XML erzeugt hat.
   en: In case of job-files the Comod element contains default settings (defaults)
   and jobs (jobs). If there are job-result files, the Comod element contains only
   job-results. In all cases you can specify the refered schemaversion
   of the Comod element and which application and application-version are generated the xml.
   -->
<xs:complexType name="ComodType">
   <xs:sequence>
          <!-- Element <version>:
                 de: Version der Struktur des Comod-Elements. Das entspricht der
                 Version des Schemas.
                 en: Version of the structure of the Comod element. This correspond
                 to the schema-version. -->
          <xs:element name="version" type="xs:string" minOccurs="0" />
          <!-- Element <producer>:
                 de: Erzeugende Anwendung. Wenn die Version der erzeugenden
                 Anwendung im XML stehen soll, so muß sie hier mit angegeben werden,
                 nicht im Element <version>.
                 en: Generating application. If the version of the generating application
                 are to be located in the XML file, so you have to specifiy the version here
                 and not at element <version>. -->
          <xs:element name="producer" type="xs:string" minOccurs="0"/>
          <!-- Element <async-id>:
                 de: Numerische Identifier für asynchrone Anfragen. Das Elementist optional
                 und ist synchrone Anfragen leer.
                 en: Identifier for asynchronous requests. this element is optional and empty for
                 synchrounous requests-->
          <xs:element name="async-id" type="xs:string" minOccurs="0" maxOccurs="1"/>
          <!-- Element <async-state>:
                 de: Status von asynchrone Anfragen. Das Element ist optional
                 und ist synchrone Anfragen leer.
                 en: state for asynchronous requests. this element is optional and empty for
                 synchrounous requests-->
          <xs:element name="async-state" type="xs:string" minOccurs="0" maxOccurs="1"/>
          <!-- de: Nach diesen Standardelementen folgt nun entweder eine Auftragsdatei
                 oder eine Auftragsergebnisdatei.
                 en: After these default-elements a job-file or a job-result file
                 is now following. -->
          <xs:choice>
                 <!-- de: Alternative: Auftragsdatei, siehe Abschnitt 2
                        en: Option: job-file, see chapter 2 -->
                 <xs:sequence>
                        <!-- Element <defaults>:
                              de: Grundeinstellungen für beliebige Kommandos. Sie gelten für alle
                              Jobs in diesem Auftrag. Siehe DefaultType.
                              en: Default settings for any commands. They are effective for all
                              jobs in these job. -->
                        <xs:element name="defaults" type="DefaultType" minOccurs="0" maxOccurs="1"/>
                        <!-- Element <jobs>:
                              de: Auflistung der Jobs in diesem Auftrag, siehe auch JobType.
                              en: Listing of jobs in these job, see also JobType. In case of async
                              poll requests, the jobs element is missing. -->
                        <xs:element name="jobs" type="JobsType" minOccurs="0" maxOccurs="1"/>
                 </xs:sequence>
                 <!-- de: Alternative: Auftragsergebnisdatei, siehe Abschnitt 3
                        en: Option: job-result file, see chapter 3 -->
                 <xs:sequence>
                        <!-- Element <job-results>:
                              de: Auflistung von Jobergebnissen. Siehe JobResultType
                              en: Listing of job-results. See JobResultType. In case of async responses
                              the jobs element is missing. -->
                        <xs:element name="job-results" type="JobResultsType" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:choice>
  </xs:sequence>
</xs:complexType>
 
 
 
<!-- de: ABSCHNITT 2: Elemente für Aufträge
   en: CHAPTER 2: elements for jobs -->
 
<!-- Element <defaults>:
   de: Die Grundeinstellungen bestehen aus einer Folge von properties-Elementen. Es
   ist hierbei erforderlich, daß bei jedem Element das Attribut command angegeben
   ist, um zu spezifizieren, für welches Kommando die Standardeinstellungen
   gelten.
   Das Element <defaults> wurde eingeführt, damit bei der Erzeugung von
   Auftrags-XMLs die Grundeinstellungen von den Schritteinstellungen unabhängig
   erzeugt werden können.
   en: The default settings consists of a order of properies-elements. It is necessary
   to specify for each element the attribut command to determine, for which command
   the default values will be applied.
   The element <defaults> was introduced for a independent creation of the default
   settings from the step-settings if you generate job-XMLs. -->
<xs:complexType name="DefaultType">
  <xs:sequence>
    <!-- Element <defaults>.<properties>:
                 de: Eine Folge von properties-Elementen, nicht Einzelproperties
                 (property-Element). Bei jedem properties-Element muß das command-
                 Attribut angegeben sein. Beispiel:
                 <defaults>
                        <properties command="format">
                              <property name="OutputFormat">FormatPdf</property>
                        </properties>
                 </defaults>
                 en: An order of properties-elements, not single properties (property-element).
                 For each properties-element you have to specify the command-attribut.
                 Example:
                 <defaults>
                        <properties command="format">
                              <property name="OutputFormat">FormatPdf</property>
                        </properties>
                 </defaults>-->
    <xs:element name="properties" type="PropertiesType" minOccurs="0"
                 maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
 
<!-- Element <jobs>:
   de: Das Jobs-Element faßt die im Auftrag enthaltenen Jobs zusammen.
   Die Jobs sind voneinander unabhängig und werden nacheinander in der in
   der Auftragsdatei angegebenen Reihenfolge abgearbeitet.
   en: The job-element unites the containing jobs in a job. The jobs are independent
   from each other and will executed one after another, in the order specified
   in the jobfile.-->
<xs:complexType name="JobsType">
  <xs:sequence minOccurs="0" maxOccurs="unbounded">
    <!-- Element <jobs>.<job> -->
    <xs:element name="job" type="JobType" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
 
<!-- Element <job>:
   de: Ein Job spezifiziert eine Folge von Schritten, die in der angegebenen Reihenfolge
   abgearbeitet werden. Zusätzlich werden spezielle Einstellungen für den
   Jobmanager (CIB job) hier angegeben.
   en: A job describes an order of steps, which are executed in specified order.
   Additional specify here special settings for the jobmanager (CIB job). -->
<xs:complexType name="JobType">
  <xs:sequence>
    <!-- Element <job>.<properties>:
                 de: Dies sind die Zuweisungen der Werte an die CIB job Properties. Sie sind
                 meistens nicht erforderlich, da diese Einstellungen oben in den Defaults
                 getroffen werden.
                 en: These are the assignments of the values to the CIB job properties. Mostly
                 they are not necessary because these settings are set in the defaults. -->
    <xs:element name="properties" type="PropertiesType" minOccurs="0" maxOccurs="1"/>
          <!-- Element <job>.<outputs>:
                 de: Hier können die Ausgaben definiert werden. Normalerweise ist die Ausgabe
                 eines Jobs die Ausgabe des letzten Schrittes. Dies kann mit dem output-
                 Element so abgeändert werden, daß die Ausgaben irgendeines Schrittes
                 oder auch von mehreren Schritten als Jobergebnis zurückgeliefert
                 werden.
                 en: Here can be defined the outputs. Usually the output is the result of a
                 job from the last step. This can be changed with the output-element so,
                 that the results from any step or from more steps are returned as
                 job-result. -->
          <xs:element name="outputs" type="OutputsType" minOccurs="0" maxOccurs="1"/>
          <!-- Element <job>.<steps>:
                 Hier folgen nun die Schritte des Jobs.
                 en: The steps of the job are now followed here. -->
          <xs:element name="steps" type="StepsType" minOccurs="1" maxOccurs="1"/>
   </xs:sequence>
   <!-- Attribut <job>.name:
          de: Der Job hat einen eindeutigen Namen. Dies kann sinnvoll sein, wenn mehrere
          jobs in einem Auftrag enthalten sind. Der Name kann zum Beispiel eine
          Session-ID sein.
          en: The job has a unique name. This make sense if more jobs contained in one job.
          For example, the name can be a session-ID.-->
   <xs:attribute name="name" type="xs:string" use="required"/>
   <!-- Attribut <job>.expected-result-code:
          de: Hier kann der zu erwartende Fehlercode angegeben werden.
          en: The expected error code can be specified here. -->
   <xs:attribute name="expected-result-code" type="xs:string" />
   <!-- Attribut <job>.id:
          de: Eine id, die in Properties mit $(id) eingesetzt werden kann.
          en: An arbitrary id, which can be placed in properties as $(id). -->
   <xs:attribute name="id" type="xs:string" use="optional"/>
   <!-- Attribut <job>.timeout:
          de: Ein optionaler Timeout für den gesamten job.
          en: An optional timeout for the execution time of the whole job. -->
   <xs:attribute name="timeout" type="xs:string" use="optional"/>
</xs:complexType>
 
<!-- Element <job>.<outputs>:
   de: Die Ausgaben werden durch Angabe von einem oder mehreren Step-Namen
   ausgewählt.
   en: The outputs are selected by indicating one or more step-names. -->
<xs:complexType name="OutputsType">
   <xs:sequence>
          <!-- Element <job>.<outputs>.<output>:
                 de: Der Name des Schritts wird als Attribut Name dieses Elements angegeben.
                 Siehe auch StepNametype.
                 en: The name of the step are specified by attribut name from this element.
                 See also StepNametype. -->
          <xs:element name="output" type="StepNameType" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
</xs:complexType>
 
<!-- Element <steps>:
   de: Hier werden die einzelnen Arbeitschritte definiert. Die Schritte werden in der
   angegebenen Reihenfolge abgearbeitet. Die Ausgabe des einen Schritts wird zur
   Eingabe des Nachfolgenden, außer diese Standardverknüpfung wird mit dem
   inputs-Element abgeändert. Siehe StepType.
   en: The single working-steps will be defined here. The steps are executed in
   specified order. The output from a step will be the input for the follower,
   besides these standardlink will be changed with the inputs-element. See StepType. -->
<xs:complexType name="StepsType">
   <xs:sequence>
          <!-- Element <steps>.<step> -->
          <xs:element name="step" type="StepType" maxOccurs="unbounded"/>
   </xs:sequence>
</xs:complexType>
 
<!-- Element <step>:
   de: Definition eines Schrittes. Ein Schritt ruft immer ein einziges Kommando auf.
   Das Kommando ist daher neben dem Schrittnamen die wichtigste Angabe.
   Außerdem werden kommandospezifische Einstellungen vorgenommen.
   en: Definition for a step. A step always calls a single command. Therefore, the command is
   besides the stepname, the primary instruction. In addition there will be
   commando-specific settings.-->
<xs:complexType name="StepType">
   <xs:sequence>
          <!-- Element <step>.<inputs>:
                 de: Normalerweise ist die Eingabe dieses Schritts die Ausgabe des
                 Vorhergehenden. Mit dem inputs-Element können jedoch die Ausgaben von
                 einem oder mehreren anderen Schritten aus diesem Job als Eingaben
                 ausgewählt werden. Die genannten Schritte müssen aber bereits
                 ausgeführt sein, also weiter oben im Job stehen.
                 en: Usually the input for these step is the output from the former. However, with
                 the inputs-element can be selected the outputs from one or more steps
                 from this job as inputs. However, the mentioned steps have already to be
                 executed, so they have to stand above the job. -->
          <xs:element name="inputs" type="InputsType" minOccurs="0" maxOccurs="1"/>
          <!-- Element <step>.<properties>:
                 de: Dies sind Zuweisungen der Werte an die kommandospezifischen
                 Properties. Die Angabe des Kommandos ist hier nicht erforderlich, da
                 sie sich immer auf das Schrittkommando beziehen.
                 en: These are assignments of the value to the commandospecific properties.
                 Here, the statement of the command is not necessary, because they
                 always refer to the step-command. -->
          <xs:element name="properties" type="PropertiesType" minOccurs="0" maxOccurs="1"/>
          <!-- Element <step>.<trace>:
                 de: Optional kann der Inhalt einer oder mehrerer Tracedateien in das
                 Schrittergebnis eingefügt werden. Das trace-Element muß also einen
                 Dateinamen auf dem Server enthalten, wenn es angegeben ist.
                 en: Optional the content of one or more trancefiles can inserted in
                 the step-result. If it is specified, the trace element must contain a
                 filename on the     server.-->
          <xs:element name="trace" type="xs:string" minOccurs="0" maxOccurs="1" />
   </xs:sequence>
   <!-- Attribut <step>.name:
          de: Der Name des Schrittes muss innerhalb eines Jobs eindeutig sein, damit
          der Schritt in den inputs- und outputs-Elementen adressiert werden kann.
          en: Inside of the job the name of the step have to be unique because the step
          can be addressed into inputs and outputs elements.
   -->
   <xs:attribute name="name" type="xs:string" use="required"/>
   <!-- Attribut <step>.command:
          de: Das auszuführende Kommando muß unbedingt angegeben sein. Die
          Menge der verfügbaren Kommandos hängt von der Version des Auftrags-
          Managers (CIB job) ab. Eine Validierung der hier angegebenen
          Kommandos wird im Hinblick auf die zukünftigen benutzerdefinerten
          Kommandos nicht vorgenommen.
          en: The command to be executed have to be specified necessarily. The amount
          of the available commands depends on the version of the Jobmanager (CIB job).
          A validation of the here specified commands will be not taken in view of future
          user defined commands. -->
   <xs:attribute name="command" type="xs:string" use="required"/>
   <!-- Attribut <step>.expected-result-code:
          de: Hier kann der zu erwartende Fehlercode angegeben werden.
          en: The expected error code can be specified here. -->
   <xs:attribute name="expected-result-code" type="xs:string" />
   <!-- Attribut <step>.timeout:
          de: Ein optionaler Timeout für diesen einen step.
          en: An optional timeout for the execution time of this step. -->
   <xs:attribute name="timeout" type="xs:string" use="optional"/>
</xs:complexType>
 
<!-- Element <step>.<inputs>:
   de: Die Eingaben werden durch Angabe des Step-Namens identifiziert. Hiermit
   kann die Standardverknüpfung der Schritte abgeändert werden. Die
   Standardverknüpfung entspricht der Aufschreibungs- und damit der
   Ausführungsreihenfolge. Siehe auch StepType.
   en: The inputs will be identified by specification of the step-name. Herewith, the
   defaultlink of the steps can be changed. The defaultlink corresponds to the
   written and so to the executed order. See also StepType. -->
<xs:complexType name="InputsType">
   <xs:sequence>
          <!-- Element <step>.<inputs>.<input>:
                 de: Der Name des Schritts wird als Attribut name dieses Elements angegeben.
                 Siehe auch StepNametype.                  en: The name of the step will be specified as attribut name for this element.
                 See also StepNametype. -->
          <xs:element name="input" type="StepNameType" minOccurs="0"
                 maxOccurs="unbounded"/>
   </xs:sequence>
</xs:complexType>
 
<!-- Element <properties>:
   de: Properties werden durch dieses Element zusammengefaßt. Das command-
   Attribut ordnet die genannten Properties einem Kommando zu.
   en: Properties are summarized by this element. The command attribut assigns the
   mentioned properties to a command. -->
<xs:complexType name="PropertiesType">
   <xs:sequence>
          <!-- Element <properties>.<property>:
                 de: Eine eventuell leere Folge von einzelnen Property-Wertzuweisungen.
                 Siehe PropertyType
                 en: A possible empty order for a single property value-assignment. See PropertyType -->
          <xs:element name="property" type="PropertyType" minOccurs="0"                  maxOccurs="unbounded"/>
   </xs:sequence>
   <!-- Attribut <properties>.command:
          de: Das command-Attribute ist optional, weil Properties ja automatisch bereits
          einem Kommando zugeordnet sind, wenn sie innerhalb eines Schrittes
          angegeben    sind. Den ein Schritt bezieht sich ja immer nur auf ein
          Kommando. Bei der Angabe von Properties im defaults-Element ist das
          nicht der Fall. Daher muß dort das command-Attribut belegt werden.
          en: The command attribut is optional, because properties are automatically
          assigned to a command if they are declared inside of a step. Because a step
          refers always to only one command. At the specification of properties in the
          defaults element this is not in the case. Therefore, there is to set the
          command attribut.
   -->
   <xs:attribute name="command" type="xs:string" use="optional"/>
</xs:complexType>
 
<!-- Element <property>:
   de: Ein Property-Element weist einem kommandospezifischen Propertynamen
   einen der dafür zugelassenen Werte zu. Die verfügbaren Propertynamen werden
   zunächst aufgrund ihrer Vielzahl nicht nach Name oder Werttyp validiert, obwohl
   das sicherlich hilfreich wäre. Dies ist aufgrund der Kommandozuordnung mit
   nicht mit dem Schema möglich. Eine Zwischenversion könnte jedoch alle überhaupt
   verfügbaren Namen validieren.
   en: A property element assigns to a commando-specific propertyname a valid value. Due to
   the plurality of the available propertynames, they are not validated by name or
   valuetype, although this will be certainly helpfully. Because of the commando assignment,
   this ist not possible with the schema. However, a temporary version can
   validate all available names. -->
   <xs:complexType name="PropertyType">
          <xs:simpleContent>
                 <!-- Attribut <property>.name:
                        de: Der Inhalt wird also als Textelement im property-Element angegeben und
                        der Name als Attribut: <property name="Name">Wert</property>. Ein
                        leerer Propertywert kann als <property name="Name"/> ausgedrückt
                        werden.
                        en: The content is specified at the property element as text element and
                        the name is specified as attribut: <property name="Name">Wert</property>.
                        An empty property value can named by <property name="Name"/>. -->
                 <xs:extension base="xs:string">
                        <xs:attribute name="name" type="xs:string"
                              use="required" />
                        <!-- Attribut <property>.mode:
                              de: derzeit werden nur die Werte: "in" "out" "inout" ausgewertet, alle anderen Werte
                              werden intern noch auf "in" gesetzt.
                              Die Modes "out" und "inout" ermglichen einem Step Property-Werte an den Aufrufer
                              zurückzuliefern
                              en: Currently only the values "in" "out" "inout" will be evaluated, any other
                              values will be put internal to "in". The modes "out" and "inout" enables a
                              step to return to the caller property-values. -->
                        <xs:attribute name="mode" type="xs:string" default="in">
        </xs:attribute>
                 </xs:extension>
          </xs:simpleContent>
   </xs:complexType>
 
   <!-- Attribut <inputs>.name und <outputs>.name:
   de: Angabe eines Schrittnamens. Dieser Typ wird in Ein- und Ausgabedefinitionen
   verwendet. Siehe Inputstype und OutputsType.
   en: Specification of a stepname. This type will be used in input and output
   definitions. See Inputstype and OutputsType.-->
<xs:complexType name="StepNameType">
   <xs:attribute name="name" type="xs:string"/>
</xs:complexType>
 
 
 
<!-- de: ABSCHNITT 3: Elemente für Auftragsergebnisse
    en: CHAPTER 3: elements for job-results -->
 
<!-- Element <failed>:
   de: Dieses Element gibt den Namen des Jobs an, der fehlgeschlagen ist.
          Wenn kein solcher Job angegeben werden kann, weil etwa ein anderer
          Fehler vorliegt, so fehlt das Element. Der Name des Jobs wird als
          Attribut jobname dieses Elements angegeben.
   en: This element indicates the name of the failured job. If no step can
          be specified, because another error is existent, the element is
          missing. The name of the job is specified as the attribut jobname.
-->
<xs:complexType name="JobFailed">
   <xs:sequence>
          <xs:element name="failed" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
   <xs:attribute name="jobname" type="xs:string" use="required"/>
</xs:complexType>
<!-- Element <job-results>:
   de: Dieses Element faßt die Ergebnisse der einzelnen Jobs zusammen. Da
   die Jobs unabhängig voneinander ausgeführt werden, kann ein Job erfolgreich
   gewesen sein, ein anderer aber einen Fehler enthalten. Zu jedem Job im Auftrag
   wird ein Ergebnis geliefert.
   en: These element summarizes the results of the single jobs. Because the jobs
   are executed independent from each other, a job can be succeeded but another
   can contain an error. At any job in the job a result is returned. -->
<xs:complexType name="JobResultsType">
   <xs:sequence>
          <!-- Element <job-results>.<failed>:
                 de: Dieses Element gibt den Namen des Jobs an, der fehlgeschlagen ist.
                 Wenn kein solcher Job angegeben werden kann, weil etwa ein anderer
                 Fehler vorliegt, so fehlt das Element. Der Name des Jobs wird als
                 Attribut jobname dieses Elements angegeben. Siehe auch JobNametype.
                 en: This element indicates the name of the failured job. If no job can
                 be specified, because another error is existent, so the element is
                 missing. The name of the job is specified as the attribut jobname.-->
          <xs:element name="failed" type="JobFailed" minOccurs="0" maxOccurs="unbounded"/>
          <!-- Element <job-results>.<job-result>:
                 de: Liste der Jobergebnisse zu allen Jobs. Wenn diese nicht bekannt ist,
                 muss das Element fehlen.
                 en: This element contains the list of job results. If the number of job-results
                 is not known, this element is missing.-->
          <xs:element name="job-result" type="JobResultType" minOccurs="0"
                 maxOccurs="unbounded"/>
   </xs:sequence>
</xs:complexType>
<!-- Element <failed>:
   de: Dieses Element gibt den Namen des Schrittes an, der fehlgeschlagen ist.
          Wenn kein solcher Schritt angegeben werden kann, weil etwa ein anderer
          Fehler vorliegt, so fehlt das Element. Der Name des Schritts wird als
          Attribut name dieses Elements angegeben.
   en: This element indicates the name of the failured step. If no step can
          be specified, because another error is existent, so the element is
          missing. The name of the step is specified as the attribut name.
-->
<xs:complexType name="StepFailed">
   <xs:sequence>
          <xs:element name="failed" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
   <xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<!-- Element <job-result>:
   de: Das Ergebnis eines einzelnen Jobs enthält einen Fehlercode ungleich 0, wenn
   einer der Schritte fehlgeschlagen ist, oder ein anderer Fehler aufgetreten ist.
   Wenn alle Schritte erfolgreich durchgeführt wurden, ist der Fehlercode 0.
   In beiden Fällen sind alle Schrittergebnisse enthalten. Aber nur bei Erfolg
   sind darin auch die Ergebnisdokumente enthalten, die über das outputs-
   Element angefordert waren. War das output-Element nicht angegeben, so
   enthält nur der letzte Schritt ein Ergebnisdokument.
   en: If one of the steps failed or another error occured, the result of a single
   job contains an errorcode unlike 0. If all steps are succeeded, the errorcode is 0.
   In all cases all step-results are included. But only if there is a success,
   the result documents are contained, which are demanded on the outputs element. If
   there was no specified output element, so only the last step is a result document. -->
<xs:complexType name="JobResultType">
   <xs:sequence>
          <!--de: Numerischer Fehlercode. 0 bedeutet, daß alle Schritte erfolgreich
                 ausgeführt wurden. Der eigentliche Fehlercode findet sich jedoch beim
                 step-result-Element des fehlgeschlagenen Schrittes.
                 en: Numerical errorcode. 0 means, that all steps are succeeded. The acutal
                 errorcode is located at the step-result-element from the failured step. -->
          <xs:element name="job-result-code" type="xs:int"/>
          <!--de: Wenn ein Fehler aufgetreten ist, wird hier zum Fehlercode zusätzlich
                 ein Fehlertext mitgeliefert. Die genaue Fehlerursache wird jedoch im
                 step-result-text-Element des fehlgeschlagenen Schrittes geliefert.
                 en: If an error occured, there will be an an additional error message.
                 The detailed cause of error is located at the step-result-text-element
                 from the failure step. -->
          <xs:element name="job-result-text" type="xs:string" minOccurs="0"/>
          <!-- Element <job-result>.<job-timing>:
                 Timing for this job. -->
          <xs:element name="job-timing" type="xs:string" />
          <!-- Element <job-result>.<failed>:
                 de: Dieses Element gibt den Namen des Schrittes an, der fehlgeschlagen ist.
                 Wenn kein solcher Schritt angegeben werden kann, weil etwa ein anderer
                 Fehler vorliegt, so fehlt das Element. Der Name des Schritts wird als
                 Attribut name dieses Elements angegeben. Siehe auch StepNametype.
                 en: This element indicates the name of the failured step. If no step can
                 be specified, because another error is existent, so the element is
                 missing. The name of the step is specified as the attribut name.-->
          <xs:element name="failed" type="StepFailed" minOccurs="0" maxOccurs="unbounded"/>
          <!-- Element <job-result>.<step-results>:
                 de: Hier folgen nun die Ergebnisse der Schritte.
                 en: The results of the steps now followed here. -->
          <xs:element name="step-results" type="StepResultsType" minOccurs="1" maxOccurs="1"/>
   </xs:sequence>
   <!-- Attribut <job-result>.name:
          de: Im job-result-Element wird der Name des zugehörigen Jobs aus dem Auftrag
          wiederholt, um bei mehreren Jobs eine Identifizierung zu ermöglichen.
          en: At the job-result-element the name of the associated job from the request will be
          repeated, to enable in more jobs a identification. -->
   <xs:attribute name="name" type="xs:string" use="required"/>
   <!-- Attribut <job-result>.id:
          de: Im job-result-Element wird die id des zugehörigen Jobs aus dem Auftrag
          wiederholt, um bei mehreren Jobs eine Identifizierung zu ermöglichen.
          en: At the job-result-element the id  of the associated job from the request will be
          repeated, to enable in more jobs a identification. -->
   <xs:attribute name="id" type="xs:string" use="optional"/>
</xs:complexType>
 
<!-- Element <step-results>:
   de: Abfolge der Einzelschrittergebnisse. Es ist für jeden Schritt aus dem Auftrag ein
   Schrittergebnis vorhanden. Wenn bei einem Schritt ein Fehler aufgetreten ist, so
   sind der fehlercode und -text beim entsprechenden step-result-Element enthalten.
   Die Schrittergebnisse der nachfolgenden Schritte sind ebenfalls vorhanden, sie
   haben jedoch den Fehlercode "Nicht ausgeführt".
   en: Sequence of single-step-results. For each step from the job a step result is
   existing. If an error occured in a step, the error code und message is contained
   at the corresponding step-result-element. The step-results of the following steps
   are also existent, but they have the error code "Nicht ausgeführt".-->
<xs:complexType name="StepResultsType">
   <xs:sequence>
          <!-- Element <step-results>.<step-result> -->
          <xs:element name="step-result" type="StepResultType"
                 maxOccurs="unbounded"/>
   </xs:sequence>
</xs:complexType>
 
<!-- Element <step-result>:
   de: Ergebnisse eines Bearbeitungsschrittes. Dieses Element enthält neben dem Fehlercode
   gegebenenfalls auch das Ergebnisdokument.
   en: Results of a working step. This element contains besides the error code
   also the result document if necessary. -->
<xs:complexType name="StepResultType">
   <xs:sequence>
          <!-- Element <step-result>.<step-result-code>:
                 de: Kommandospezifischer, numerischer Fehlercode. 0 bedeutet, daß der
                 Schritt erfolgreich ausgeführt wurde.
                 en: Commandospecific, numerical error code. 0 means, that the step
                 is executed succeeded -->
          <xs:element name="step-result-code" type="xs:int" />
          <!-- Element <step-result>.<step-result-text>:
                 de: Kommandospezifischer Fehlertext, häufig mit hilfreichen
                 Zusatzinformationen aus dem aufgerufenen Modul.
                 en: Commandospecific error message, frequently with helping
                 additional informations from the called modul. -->
          <xs:element name="step-result-text" type="xs:string" />
          <!-- Element <step-result>.<step-timing>:
                 Timing for this step. -->
          <xs:element name="step-timing" type="xs:string" />
          <!-- Element <step-result>.<properties>:
               Sequenz aller OutputProperties dieses Schritts:
               Dies sind alle Properties mit mode=out bzw inout -->
          <xs:element name="properties" type="PropertiesType" maxOccurs="1" minOccurs="0"></xs:element>
          <!-- Element <step-result>.<step-data>:
                 de: Enthält im Erfolgsfall bei Schritten, die ein Ergebnis liefern das
                 Ergebnisdokument oder allgemeiner Ergebnisdaten, wie etwa eine Url.
                 en: In success case on steps, which returns a result contains the
                 result document or commonly resultdata like for example an url. -->
            <xs:element name="step-data" type="StepDataType" minOccurs="0" maxOccurs="1"/>
          <!-- Element <step-result>.<step-trace>:
                 de: Wenn im Auftrag ein trace-Element angegeben war, wird im step-trace-
                 Element der zugehörige Dateiinhalt zurückgeliefert. Auch im Erfolgsfall
                 en: If a trace element was specifiend in a job, there will returned the
                 according file content at the step trace element. -->
          <xs:element name="step-trace" type="xs:string" minOccurs="0" maxOccurs="1" />
   </xs:sequence>
   <!-- Attribut <step-result>.name:
          de: Der Name entspricht dem Namen des zugehörigen Schritts im
          Auftrag.
          en: The name corresponds to the name of the associated step at the job. -->
   <xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
  
<!-- Element <step-result>.<step-data>:
   de: Schrittergebnis-Typ (Base64 oder CData).
   en: step-result-type (Base64 or CData) -->
<xs:complexType name="StepDataType">
   <xs:simpleContent>
          <xs:extension base="xs:string">
                 <!-- Attribut <step-data>.encoding:
                        de: Das encoding-Attribut gibt an, welche Art von Ergebnis im step-data-
                        Element enthalten ist. Derzeit sind dies base64 für Ergebnisdokumente
                        und cdata.
                        en: The encoding attribut specifies the kind of result, contained in the
                        step data element. Currently these are base64 and cdata. -->
                 <xs:attribute name="encoding">
                        <xs:simpleType>
                              <xs:restriction base="xs:string">
                                     <!-- Enum <step-data>.encodings:
                                            de: Hier werden ggf. weitere mögliche Encodings definiert.
                                            en: Here, more available encodings will be defined. -->
                                     <xs:pattern value="base64|cdata"/>
                              </xs:restriction>
                        </xs:simpleType>
                 </xs:attribute>
                 <!-- Attribut <step-data>.mimetype:
                        de: Gibt den Dokumenttyp des im step-data-Element enthaltenen
                        Ergebnisdokuments an. Die Angabe erfolgt http-konform, also
                        etwa application/pdf oder text/plain.
                        en: Specifies the document type from the result-document which is
                        contained at the step data element. The specification happens
                        http-conform, for example application/pdf or text/plain. -->
                 <xs:attribute name="mimetype" type="xs:string"/>
          </xs:extension>
   </xs:simpleContent>
</xs:complexType>
 
<!-- Schema: "http://www.cib.de/schemas/job/<version>" -->
</xs:schema>