Tipos de datos de plantilla XML nativos
El tipo de datos XML nativo se define como XML_TYPE.
Xml define la sintaxis. Se puede definir cualquier tipo de datos reconocido por el esquema XML. El filtro del analizador no depende de los tipos de datos XML para que el analizador actual pueda admitir tipos de datos XML futuros sin cambios.
*DataType: XML_TYPE asocia una plantilla a un tipo de datos simple integrado para un lenguaje de definición de esquema XML específico. El valor de datos de instancia se generará como el contenido de un elemento XML cuyo xsi:type se deriva de la construcción *XMLDataType especificada por esta plantilla.
Las directivas siguientes se usan para definir el tipo de datos XML_TYPE:
*XMLDataType (obligatorio). Cualquier tipo simple integrado de esquema XSD. La recomendación de World Wide Web Consortium (W3C) para el esquema XML reconoce los siguientes tipos de datos simples integrados: 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 y NMTOKENS. Tenga en cuenta que el analizador de GDL no se limita a estos tipos de datos y está diseñado para controlar futuros tipos de datos XML sin cambios.
*ArrayLabel (opcional). Si especifica esta directiva, el filtro del analizador espera que el valor esté entre paréntesis, precedido por la etiqueta de matriz especificada.
La sintaxis del valor debe cumplir la sintaxis que define el estándar XML W3C para ese tipo de datos determinado. Si la sintaxis XML entra en <conflicto con las reglas básicas de sintaxis de GDL, el valor (o simplemente la parte en conflicto) debe ir entre las construcciones Begin/EndValue:> . Los valores XML con estas sintaxis incompatibles o cuya sintaxis no es compatible con la sintaxis que usan los tipos de datos compuestos, no pueden aparecer como miembro de un tipo de datos compuesto. Tenga en cuenta también que el analizador de GDL no escapará de caracteres XML especiales, como corchetes de apertura o cierre (< o ) o >una y comercial (&). El creador del valor es responsable de cumplir con la sintaxis XML de los datos de caracteres.
Por ejemplo, considere la siguiente plantilla.
*Template: XML_STRING
{
*Type: DATATYPE
*DataType: XML_TYPE
*XMLDataType: "string"
}
Si usa la plantilla anterior, se creará la siguiente entrada de esquema XML. Esta entrada define un nuevo tipo de datos que se deriva del tipo especificado originalmente por la directiva *XMLDataType , pero este nuevo tipo de datos tiene atributos XML adicionales que pueden aparecer en la instantánea. Si usó el tipo de datos original, recibirá errores de validación de esquema porque los tipos predefinidos originales no permiten que aparezcan atributos XML.
<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>
Tenga en cuenta la siguiente entrada GDL.
*Text: Hello World
Considere la plantilla PHRASE, que declara el atributo GDL *Text para tener un *ValueType definido por la plantilla de XML_STRING, como se muestra en el ejemplo de código siguiente.
*Template: PHRASE
{
*Name: "*Text"
*Type: ATTRIBUTE
*ValueType: XML_STRING
}
Si la entrada GDL anterior se interpreta mediante la plantilla PHRASE, se producirá la siguiente salida XML.
<GDL_ATTRIBUTE Name="*Text" xsi:type="GDLW_string" >Hello World</GDL_ATTRIBUTE>
El atributo XML xsi:type se usa para especificar el tipo de datos que contiene este elemento de atributo porque el esquema no contiene ninguna declaración para este elemento.