Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il tipo di dati XML nativo viene definito come XML_TYPE.
La sintassi è definita da XML. È possibile definire qualsiasi tipo di dati riconosciuto da XML Schema. Il filtro parser non dipende dai tipi di dati XML, in modo che il parser corrente possa supportare i tipi di dati XML futuri senza modifiche.
* DataType: XML_TYPE associa un modello a un tipo di dati semplice predefinito per un linguaggio di definizione dello schema XML specifico. Il valore dei dati dell'istanza verrà restituito come contenuto di un elemento XML il cui tipo xsi:type è derivato dal costrutto *XMLDataType specificato da questo modello.
Per definire il tipo di dati XML_TYPE vengono usate le direttive seguenti:
*XMLDataType (obbligatorio). Qualsiasi tipo semplice di schema XSD integrato. La raccomandazione del World Wide Web Consortium (W3C) per XML Schema riconosce i seguenti tipi di dati semplici predefiniti: 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 e NMTOKENS. Si noti che il parser GDL non è limitato a questi tipi di dati ed è progettato per gestire i tipi di dati XML futuri senza modifiche.
*ArrayLabel (facoltativo). Se si specifica questa direttiva, il filtro del parser prevede che il valore sia racchiuso tra parentesi, preceduto dall'etichetta di matrice specificata.
La sintassi del valore deve essere conforme alla sintassi definita dallo standard XML W3C per quel particolare tipo di dati. Se la sintassi XML è in conflitto con le regole di sintassi GDL di base, il valore (o solo la parte in conflitto) deve essere racchiuso tra <i costrutti Begin/EndValue:> . I valori XML con tali sintassi incompatibili o la cui sintassi non è compatibile con la sintassi utilizzata dai tipi di dati composti, non possono essere visualizzati come membri di un tipo di dati composto. Si noti inoltre che il parser GDL non eseguirà l'escape dei caratteri speciali XML come le parentesi angolari di apertura o chiusura (< o >) o un e commerciale (&). L'autore del valore è responsabile della conformità alla sintassi XML per i dati di tipo carattere.
Si consideri ad esempio il modello seguente.
*Template: XML_STRING
{
*Type: DATATYPE
*DataType: XML_TYPE
*XMLDataType: "string"
}
Se si usa il modello precedente, verrà creata la voce di XML Schema seguente. Questa voce definisce un nuovo tipo di dati derivato dal tipo originariamente specificato dalla direttiva *XMLDataType , ma questo nuovo tipo di dati include attributi XML aggiuntivi che possono essere visualizzati nello snapshot. Se è stato usato il tipo di dati originale, si riceveranno errori di convalida dello schema perché i tipi predefiniti originali non consentono la visualizzazione degli attributi 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>
Si consideri la voce GDL seguente.
*Text: Hello World
Si consideri il modello PHRASE, che dichiara l'attributo GDL *Text per avere un *ValueType definito dal modello XML_STRING, come illustrato nell'esempio di codice seguente.
*Template: PHRASE
{
*Name: "*Text"
*Type: ATTRIBUTE
*ValueType: XML_STRING
}
Se la voce GDL precedente viene interpretata usando il modello PHRASE, verrà generato l'output XML seguente.
<GDL_ATTRIBUTE Name="*Text" xsi:type="GDLW_string" >Hello World</GDL_ATTRIBUTE>
L'attributo XML xsi:type viene utilizzato per specificare il tipo di dati mantenuto da questo elemento attributo perché lo schema non contiene alcuna dichiarazione per questo elemento.