Die Datenstruktur des XMLs von Wizard-Formularen setzt sich aus drei Kern-Elementen zusammen: Gruppen, Variablen und Listen.

Schema

Damit die XML-Daten von anderen Systemen validiert werden können, bieten wir ein XML Schema zum Download an.

Bis Version 8.5 (formData.xsd)

Ab Version 9.0 (formData_9-0.xsd)

Allgemeine Informationen

Jede Variable, Gruppe oder Liste besitzt eine ID, welche einen eindeutigen Schlüssel des Feldes kennzeichnet. Dieser Wert entspricht bei einfachen Feldern dem Feldnamen. Diese ID ist eindeutig und darf innerhalb einer XML Datenstruktur nur einmal vorkommen. Kompositionselemente wie Seiten (page), Gruppen (group) oder Listeneinträge (entry) können im verarbeitenden System ignoriert werden. Sie haben datentechnisch keine Bedeutung sondern vereinfachen das Lesen resp. die Strukturierung dieses einfachen und generischen Datenformats.

Variablen

<var id="VAR_1">
  <?jax format="TT.MM.JJJJ"?>
  2020-05-04
</var>
<var id="VAR_2">
  <?jax schluessel="wert"?>
  test
</var>
<var id="VAR_3">muster</var>
<var id="VAR_4">example</var>
<var id="VAR_5">inhalt</var>

Einzelne Felder werden mit dem XML-Element <var> gekennzeichnet. Die Felder können eigenständig, als Bestandteil von Listeneinträgen oder in Gruppen vorkommen und repräsentieren die vom User getätigten Eingaben.

Listen

Bei dem Listenelement <list> wird zusätzlich noch die effektive Anzahl Einträge mit dem Attribut "size" mitgegeben. Ebenso sind die zusammengehörigen Felder eines Listeneintrages mit dem Tag "entry" umgeben. Die Verarbeitungsanweisungen werden innerhalb des Listenelements zuoberst gesetzt. Es können pro Liste maximal 999 Einträge erstellt werden. Ein Listeneintrag kann maximal 60 Variabeln beinhalten. 

<list id="liste" size="3">
  <entry>
    <var id="liste_1_name">Müller</var>
    <var id="liste_1_vorname">Stephan</var>
  </entry>
  <entry>
    <var id="liste_2_name">Diethelm</var>
    <var id="liste_2_vorname">Bernd</var>
  </entry>
  <entry>
    <var id="liste_3_name">August</var>
    <var id="liste_3_vorname">Gabriela</var>
  </entry>
</list>

Gruppen

<group id="GRP_1">
  <?jax global1="true"?>
  <var id="GRP_VAR_1">Müller</var>
  <var id="GRP_VAR_2">Martin</var>
  <var id="GRP_VAR_3">Teststrasse</var>
</group>

Gruppen sind eine Kombination von Feldern und/oder Listenelementen und werden mit dem Element <group> gekennzeichnet.

Repetitionen

<repetition id="REP_1">
  <group id="GRP_2_1">
    <var id="GRP_2_1_VAR_4">Müller</var>
    <var id="GRP_2_1_VAR_5">Martin</var>
    <var id="GRP_2_1_VAR_6">Teststrasse 11</var>
  </group>
    <group id="GRP_2_2">
    <var id="GRP_2_2_VAR_4">Example</var>
    <var id="GRP_2_2_VAR_5">Heinz</var>
    <var id="GRP_2_2_VAR_6">Sampleweg 22</var>
  </group>    
</repetition> 

Repetitionen sind Wiederholungen der gleichen Gruppe und werden mit dem Element <repetition> gekennzeichnet. Sie können 0 bis maximal 999 Gruppen beinhalten.

Seiten

<page id="PG_1">
  <var id="VAR_1">Müller</var>
  <var id="VAR_2">Martin</var>
  <var id="VAR_3">Teststrasse</var>
  <group id="GRP_1">
    <var id="GRP_1_VAR_1">Müller</var>
    <var id="GRP_1_VAR_2">Martin</var>
    <var id="GRP_1_VAR_3">Teststrasse</var>
  </group>
  <list id="liste" size="3">
    <entry>
      <var id="liste_1_name">Müller</var>
      <var id="liste_1_vorname">Stephan</var>
    </entry>
  </list>
  <repetition id="REP_1">
   <group id="GRP_2_1">
    <var id="GRP_2_1_VAR_4">Müller</var>
    <var id="GRP_2_1_VAR_5">Martin</var>
    <var id="GRP_2_1_VAR_6">Teststrasse 11</var>
  </group>
    <group id="GRP_2_2">
    <var id="GRP_2_2_VAR_4">Example</var>
    <var id="GRP_2_2_VAR_5">Heinz</var>
    <var id="GRP_2_2_VAR_6">Sampleweg 22</var>
  </group>    
  </repetition>
</page>

Seiten sind eine Kombination von Feldern, Gruppen, Repetitionen und/oder Listenelementen und werden mit dem Element <page> gekennzeichnet.

pi Elemente

<group id="GRP_1">
  <pi>
   <key>global1</key>
   <value>true</value> 
  </pi>
</group>

"pi" steht für Processing Instruction und ist für Verarbeitungsinformationen für Drittsysteme gedacht. Diese werden standardmässig nur als eigentliche "XML processing instructions" (<? jax   global1 = "true" ?>) serialisiert, können aber auch als eigene Tags mit "key" und "value" ausgegeben werden. Im Beispiel oben wird die Processing Instruction "global1" als Tags "key" und "value" unterhalb des Tags "pi" ausgegeben.

Konfiguratin des Verhaltens 

Standardmässig ist dies ab der Version 9.0 aktiviert. Das heisst, wenn "alte" bereits gespeicherte/eingereichte Formulare in der Version 9.0 geöffnet und wieder gespeichert werden, so werden diese standardmässig mit der neuen Struktur gespeichert. Möchte man dieses Verhalten pro Mandant deaktivieren, soll kann dieses Flag auf "false" gesetzt werden:

Mandant-Eigenschaft (jaxfront.xml)

Einstellung jaxfront.xml (pro Mandant)

<property mutable="true">
 <key>jaxforms.formwizard.serialize.flatDataStructure</key>
 <value>false</value>
</property> 

Formular-Eigenschaft (property)

Falls das gewünschte Verhalten nur für ein einzelnes Formular deaktiviert werden soll, so kann die Eigenschaft auf der Formulardefinition hinterlegt werden. Das auf der Formular definierte Verhalten überschreibt in jedem Fall das Property im jaxfront.xml.

WERT: jaxforms.formwizard.serialize.flatDataStructure