Types de données de modèle XML natifs
Le type de données XML natif est défini comme XML_TYPE.
La syntaxe est définie par XML. Tout type de données reconnu par le schéma XML peut être défini. Le filtre d’analyseur ne dépend pas des types de données XML, de sorte que l’analyseur actuel peut prendre en charge les types de données XML futurs sans aucune modification.
*DataType : XML_TYPE associe un modèle à un type de données simple intégré pour un langage de définition de schéma XML spécifique. La valeur de données instance sera générée en tant que contenu d’un élément XML dont xsi :type est dérivé de la construction *XMLDataType spécifiée par ce modèle.
Les directives suivantes sont utilisées pour définir le type de données XML_TYPE :
*XMLDataType (obligatoire). Tout schéma XSD de type simple intégré. La recommandation W3C (World Wide Web Consortium) pour le schéma XML reconnaît les types de données simples intégrés suivants : string, normalizedString, token, byte, unsignedByte, base64Binary, hexBinary, integer, positiveInteger, negativeInteger, nonNegativeInteger, nonPositiveInteger, int, unsignedInt, long, unsignedLong, short, unsignedShort, decimal, float, double, boolean, time, date, date, gMonth, gYear, gYearMonth, gDay, gMonthDay, gMonthDay, Name, QName, NCName, anyURI, language, ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN et NMTOKENS. Notez que l’analyseur GDL n’est pas limité à ces types de données et qu’il est conçu pour gérer les futurs types de données XML sans aucune modification.
*ArrayLabel (facultatif). Si vous spécifiez cette directive, le filtre de l’analyseur s’attend à ce que la valeur soit entourée de parenthèses, précédées de l’étiquette de tableau spécifiée.
La syntaxe de la valeur doit respecter la syntaxe définie par la norme XML W3C pour ce type de données particulier. Si la syntaxe XML est en conflit avec les règles de syntaxe GDL de base, la valeur (ou simplement la partie en conflit) doit être placée dans <les constructions Begin/EndValue :> . Les valeurs XML avec ces syntaxes incompatibles, ou dont la syntaxe est incompatible avec la syntaxe utilisée par les types de données composés, ne peuvent pas apparaître en tant que membre d’un type de données composé. Notez également que l’analyseur GDL n’échappe pas aux caractères XML spéciaux tels que les crochets ouvrants ou fermants (< ou >) ou un ampersand (&). Le créateur de la valeur est responsable de la conformité à la syntaxe XML pour les données de caractères.
Par exemple, considérez le modèle suivant.
*Template: XML_STRING
{
*Type: DATATYPE
*DataType: XML_TYPE
*XMLDataType: "string"
}
Si vous utilisez le modèle précédent, l’entrée de schéma XML suivante est créée. Cette entrée définit un nouveau type de données dérivé du type initialement spécifié par la directive *XMLDataType, mais ce nouveau type de données a des attributs XML supplémentaires qui peuvent apparaître dans le instantané. Si vous utilisiez le type de données d’origine, vous recevrez des erreurs de validation de schéma, car les types prédéfinis d’origine n’autorisent pas l’affichage des attributs 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>
Considérez l’entrée GDL suivante.
*Text: Hello World
Considérez le modèle PHRASE, qui déclare l’attribut GDL *Text pour avoir un *ValueType défini par le modèle XML_STRING, comme le montre l’exemple de code suivant.
*Template: PHRASE
{
*Name: "*Text"
*Type: ATTRIBUTE
*ValueType: XML_STRING
}
Si l’entrée GDL précédente est interprétée à l’aide du modèle PHRASE, la sortie XML suivante se produit.
<GDL_ATTRIBUTE Name="*Text" xsi:type="GDLW_string" >Hello World</GDL_ATTRIBUTE>
L’attribut XML xsi :type est utilisé pour spécifier le type de données détenu par cet élément d’attribut, car le schéma ne contient aucune déclaration pour cet élément.