Freigeben über


Native XML-Vorlagendatentypen

Der native XML-Datentyp wird als XML_TYPE definiert.

Die Syntax wird durch XML definiert. Jeder Datentyp, der vom XML-Schema erkannt wird, kann definiert werden. Der Parserfilter ist nicht von den XML-Datentypen abhängig, sodass der aktuelle Parser zukünftige XML-Datentypen ohne Änderungen unterstützen kann.

*DataType: XML_TYPE ordnet eine Vorlage einem integrierten einfachen Datentyp für eine bestimmte XML-Schemadefinitionssprache zu. Der instance Datenwert wird als Inhalt eines XML-Elements ausgegeben, dessen xsi:type vom *XMLDataType-Konstrukt abgeleitet wird, das von dieser Vorlage angegeben wird.

Die folgenden Direktiven werden verwendet, um den datentyp XML_TYPE zu definieren:

  • *XMLDataType (erforderlich). Alle integrierten einfachen XSD-Schematypen. Die W3C-Empfehlung (World Wide Web Consortium) für das XML-Schema erkennt die folgenden integrierten einfachen Datentypen: string, normalizedString, token, byte, unsignedByte, base64Binary, hexBinary, integer, positiveInteger, negativeInteger, nonNegativeInteger, nonPositiveInteger, int, unsignedInt, long, unsignedLong, short, unsignedShort, decimal, float, double, boolean, time, dateTime, duration, date, gMonth, gYear, gYearMonth, gDay, gMonthDay, Name, QName, NCName, anyURI, language, ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN und NMTOKENS. Beachten Sie, dass der GDL-Parser nicht auf diese Datentypen beschränkt ist und darauf ausgelegt ist, zukünftige XML-Datentypen ohne Änderungen zu verarbeiten.

  • *ArrayLabel (optional). Wenn Sie diese Direktive angeben, erwartet der Parserfilter, dass der Wert in Klammern eingeschlossen wird, voran die angegebene Arraybezeichnung.

Die Syntax des Werts muss der Syntax entsprechen, die der W3C-XML-Standard für diesen bestimmten Datentyp definiert. Wenn die XML-Syntax mit den grundlegenden GDL-Syntaxregeln in Konflikt tritt, muss der Wert (oder nur der in Konflikt stehende Teil) in <Begin/EndValue:-> Konstrukte eingeschlossen werden. XML-Werte mit solchen inkompatiblen Syntaxen oder deren Syntax nicht mit der Syntax kompatibel ist, die von Verbunddatentypen verwendet wird, können nicht als Member eines zusammengesetzten Datentyps angezeigt werden. Beachten Sie auch, dass der GDL-Parser keine XML-Sonderzeichen wie öffnende oder schließende Klammern (< oder >) oder ein Ampersand (&) mit Escapezeichen versehen. Der Ersteller des Werts ist für die Einhaltung der XML-Syntax für Zeichendaten verantwortlich.

Betrachten Sie beispielsweise die folgende Vorlage.

*Template:  XML_STRING
{
    *Type:  DATATYPE
    *DataType:   XML_TYPE
    *XMLDataType: "string"
}

Wenn Sie die vorherige Vorlage verwenden, wird der folgende XML-Schemaeintrag erstellt. Dieser Eintrag definiert einen neuen Datentyp, der von dem Typ abgeleitet wird, der ursprünglich von der *XMLDataType-Direktive angegeben wurde, aber dieser neue Datentyp verfügt über zusätzliche XML-Attribute, die im Momentaufnahme angezeigt werden können. Wenn Sie den ursprünglichen Datentyp verwendet haben, erhalten Sie Schemavalidierungsfehler, da die ursprünglichen vordefinierten Typen das Anzeigen von XML-Attributen nicht zulassen.

    <complexType name = "GDLW_string">
        <simpleContent>
            <extension base="string">
                <attribute name="Name" type="string" use="optional"/>
                <attribute name="Personality" type="string" use="optional"/>
            </extension>
        </simpleContent>
    </complexType>

Betrachten Sie den folgenden GDL-Eintrag.

*Text: Hello World

Betrachten Sie die PHRASE-Vorlage, die das GDL-Attribut *Text als *ValueType deklariert, der von der XML_STRING-Vorlage definiert wird, wie im folgenden Codebeispiel gezeigt.

*Template:  PHRASE
{
    *Name:  "*Text"
    *Type:  ATTRIBUTE
    *ValueType:  XML_STRING
}

Wenn der frühere GDL-Eintrag mithilfe der PHRASE-Vorlage interpretiert wird, erfolgt die folgende XML-Ausgabe.

<GDL_ATTRIBUTE Name="*Text"  xsi:type="GDLW_string" >Hello World</GDL_ATTRIBUTE>

Das XML-Attribut xsi:type wird verwendet, um den Datentyp anzugeben, der von diesem Attributelement gespeichert wird, da das Schema keine Deklaration für dieses Element enthält.