ONYX - 9.0 - Utilisation

Designer XML Schema Definition (XSD)

De MappingDoc

Ce document décrit au travers un XSD, le schéma d'un flux d'entrée XML pour effectuer la composition d'un document avec le Designer Mapping.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="doc">
    <xs:annotation>
      <xs:documentation>ROOT element with no other semantic</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="page" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Represents a document or a single page in a document. The order between 'group' and 'field' child elements doesn't matter, but the order between 'group' elements of same name requires special attention </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="field" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Represents a simple field (a simple data) for the whole page.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="nonEmptyString">
                      <xs:attribute name="name" type="nonEmptyString" use="required">
                        <xs:annotation>
                          <xs:documentation>Required to identify each 'field'. Value must be unique at this level.</xs:documentation>
                        </xs:annotation>
                      </xs:attribute>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="group" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>A 'group' is a collection of lines (records) and offers a convenient way to create tables</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="line" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>Represents a row (a record) in a table. The order of the lines in the group requires special attention</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="field" minOccurs="0" maxOccurs="unbounded">
                            <xs:annotation>
                              <xs:documentation>Represents a field (a data) in a row</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="nonEmptyString">
                                  <xs:attribute name="name" type="nonEmptyString" use="required">
                                    <xs:annotation>
                                      <xs:documentation>Required to identify each 'field' in the line. Value must be unique at this level</xs:documentation>
                                    </xs:annotation>
                                  </xs:attribute>
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="name" type="nonEmptyString" use="required">
                          <xs:annotation>
                            <xs:documentation>Intended to identify different types of 'line' in a given group</xs:documentation>
                          </xs:annotation>
                        </xs:attribute>
                      </xs:complexType>
                      <xs:unique name="UniqueLineFieldName">
                        <xs:annotation>
                          <xs:documentation>group/line/field/@name uniqueness</xs:documentation>
                        </xs:annotation>
                        <xs:selector xpath="./field"/>
                        <xs:field xpath="@name"/>
                      </xs:unique>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="name" use="required">
                    <xs:annotation>
                      <xs:documentation>Intended to identify a 'group' in a given 'page'</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:string">
                        <xs:minLength value="1"/>
                        <xs:maxLength value="10"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attribute name="name" type="nonEmptyString" use="required">
              <xs:annotation>
                <xs:documentation>Intended to identify different types of 'page' in the overall document</xs:documentation>
              </xs:annotation>
            </xs:attribute>
          </xs:complexType>
          <xs:unique name="UniqueFieldName">
            <xs:annotation>
              <xs:documentation>/doc/page/field/@name uniqueness</xs:documentation>
            </xs:annotation>
            <xs:selector xpath="./field"/>
            <xs:field xpath="@name"/>
          </xs:unique>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="nonEmptyString">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>