Definieren von Datentypen mithilfe von Vorlagen
Alle Datentypen, sowohl primitive als auch zusammengesetzte Typen, müssen mithilfe einer Vorlage definiert werden. Nachdem ein Datentyp definiert wurde, kann jede Attributvorlage den Wert eines bestimmten Datentyps mithilfe der *ValueType-Direktive deklarieren. Der Wert dieser Direktive ist der Name einer Datentypvorlage.
Wenn der Parserfilter auf einen GDL-Dateneintrag stößt, der eine Instanz eines Attributs ist, versucht er, den Wertteil dieses Eintrags gemäß den für diesen Datentyp definierten Syntaxregeln zu analysieren. Wenn der Parserfilter erfolgreich verläuft, wird der Datentyp in die primitiven XML-äquivalenten Datentypen dekompiliert und diese Werte in der entsprechenden XML ausgegeben. Der generierte XML-Code, der einen zusammengesetzten Datentyp darstellt, behält die logische Struktur der ursprünglichen Datentypdefinition bei. Die untergeordneten Elemente eines zusammengesetzten Datentyps werden durch Tags definiert, die in der Datentypvorlage definiert sind. Diese Benennung ermöglicht es einem menschlichen Reader oder Softwareclient der XML-Momentaufnahme, jeden Wert in einem zusammengesetzten Datentyp leicht zu finden und zu identifizieren.
Eine Vorlage wird als Datentypvorlage (eine Vorlage, die einen Datentyp definiert) durch Festlegen der *Type: DATATYPE-Direktive festgelegt. Die Direktiven, die in einer Datentypvorlage erkannt werden, sind:
*ValueType: [Datentypvorlagenname]. Diese Direktive deklariert den Wert eines Attributs als einen bestimmten Datentyp. Die *ValueType-Direktive kann nur in Attributvorlagen angezeigt werden. (Attributvorlagen sind Vorlagen mit der *Type: ATTRIBUTE-Direktive ).
*Datentyp: Symbol. Diese Direktive hat einen der folgenden Werte: PASSTHROUGH, XML_TYPE, XSD_DEFINED, ENUMERATOR, FILTER_TYPE, ARRAY, COMPOSITE oder MULTIPLE_PERSONALITY.
*ElementType: list. Diese Direktive definiert eine Liste der VORLAGEN-Datentypnamen.
*RequiredDelimiter: Trennzeichen. Diese Direktive definiert ein Trennzeichen mit einer an zitierten Zeichenfolge.
*OptionalDelimiter: Trennzeichen. Diese Direktive definiert ein optionales Trennzeichen mit einer an zitierten Zeichenfolge.
*ArrayLabel: Symbol. Diese Direktive definiert eine Arraybezeichnung mit einer an zitierten Zeichenfolge.
*ElementTags: list. Diese Direktive definiert eine Liste der Symbole, die für Elementtags verwendet werden sollen.
*EnumeratorList: list. Diese Direktive definiert eine Liste der Symbole, die für eine Enumerationsliste verwendet werden sollen.
*XSDTypeDefinition: Symbol. Diese Direktive definiert einen beliebigen Wert, eingeschlossen durch <Begin/EndValue-Elemente> , der für eine XSD-Typdefinition verwendet werden soll.
*ComplexType?: boolean. Diese Direktive definiert, ob ein Typ komplex ist oder nicht. Wenn der Wert WAHR ist, ist der Typ komplex. Andernfalls ist der Typ einfach.
*ArraySize: ganze Zahl. Diese Direktive definiert den Bereich eines Arrays. Sie können bis zu zwei ganze Zahlen verwenden, um einen Arraybereich anzugeben.
*XMLDataType: string. Diese Direktive definiert einen XML-Datentyp mit einer an zitierten Zeichenfolge.
FilterTypeName: string. Diese Direktive definiert einen Filtertypnamen mithilfe einer an zitierten Zeichenfolge.
*MaxValue: ganze Zahl. Diese Direktive definiert die maximale Größe eines Werts mithilfe einer GDL-Ganzzahl.
*MinLength: ganze Zahl. Diese Direktive definiert die Mindestlänge eines Werts mithilfe einer nicht negativen GDL-Ganzzahl.
*MaxLength: ganze Zahl. Diese Direktive definiert die maximale Länge eines Werts mithilfe einer nicht negativen GDL-Ganzzahl.
Hinweis : Nicht alle Direktiven werden in allen Datentypvorlagen erkannt.
Wenn keine Vorlage an den GDL-Attributeintrag gebunden werden kann, wird der Wert dieses Attributs in der Momentaufnahme ohne Änderung innerhalb eines CDATA-Abschnitts ausgegeben. CDATA muss als Elementinhalt (d. h. das untergeordnete Element) des ATTRIBUT-Elements gespeichert werden.
Angenommen, der Parser kann keine Vorlage finden, die den folgenden GDL-Attributeintrag beschreibt.
*ModelName: "OEMName LaserJet "
Anschließend wird der Eintrag wie folgt in der Momentaufnahme angezeigt.
<GDL_ATTRIBUTE Name="*ModelName"
<![CDATA["OEMName LaserJet "]]></GDL_ATTRIBUTE>