Condividi tramite


Definizione dei tipi di dati tramite modelli

Tutti i tipi di dati, sia primitivi che composti, devono essere definiti usando un modello. Dopo aver definito un tipo di dati, qualsiasi modello di attributo può dichiarare il relativo valore come di un tipo di dati specifico usando la direttiva *ValueType . Il valore di questa direttiva è il nome di un modello di tipo di dati.

Quando il filtro del parser rileva una voce di dati GDL che è un'istanza di un attributo, tenterà di analizzare la parte del valore di tale voce in base alle regole di sintassi definite per tale tipo di dati. In caso di esito positivo, il filtro del parser scomporrà il tipo di dati nei tipi di dati XML equivalenti primitivi e restituirà tali valori nel codice XML appropriato. Il codice XML generato che rappresenta un tipo di dati composto mantiene la struttura logica della definizione del tipo di dati originale. Agli elementi figlio di un tipo di dati composto vengono assegnati nomi definiti dai tag definiti nel modello di tipo di dati. Questa denominazione consente a un lettore umano o a un client software dello snapshot XML di individuare e identificare facilmente ogni valore in un tipo di dati composto.

Un modello viene designato come modello di tipo di dati (uno che definisce un tipo di dati) impostando la direttiva *Type: DATATYPE . Le direttive riconosciute all'interno di un modello di tipo di dati sono:

*ValueType: [Nome modello tipo di dati]. Questa direttiva dichiara il valore di un attributo come di un particolare tipo di dati. La direttiva *ValueType può essere visualizzata solo all'interno dei modelli di attributo. I modelli di attributo sono modelli con la direttiva *Type: ATTRIBUTE .

*DataType: simbolo. Questa direttiva ha uno dei valori seguenti: PASSTHROUGH, XML_TYPE, XSD_DEFINED, ENUMERATOR, FILTER_TYPE, ARRAY, COMPOSITE o MULTIPLE_PERSONALITY.

*ElementType: list. Questa direttiva definisce un elenco di nomi dei tipi di dati TEMPLATE.

*RequiredDelimiter: delimitatore. Questa direttiva definisce un delimitatore con una stringa tra virgolette.

*OptionalDelimiter: delimitatore. Questa direttiva definisce un delimitatore facoltativo con una stringa tra virgolette.

*ArrayLabel: simbolo. Questa direttiva definisce un'etichetta di matrice con una stringa tra virgolette.

*ElementTags: list. Questa direttiva definisce un elenco di simboli da utilizzare per i tag di elemento.

*EnumeratorList: list. Questa direttiva definisce un elenco di simboli da utilizzare per un elenco di enumeratori.

*XSDTypeDefinition: simbolo. Questa direttiva definisce un valore arbitrario, racchiuso dagli <elementi Begin/EndValue> , da usare per una definizione di tipo XSD.

*ComplexType?: booleano. Questa direttiva definisce se un tipo è complesso o meno. Se il valore è TRUE, il tipo è complesso; in caso contrario, il tipo è semplice.

*ArraySize: integer. Questa direttiva definisce l'intervallo di una matrice. È possibile usare fino a due numeri interi per specificare un intervallo di matrici.

*XMLDataType: stringa. Questa direttiva definisce un tipo di dati XML con una stringa tra virgolette.

FilterTypeName: string. Questa direttiva definisce un nome di tipo di filtro usando una stringa tra virgolette.

*MaxValue: integer. Questa direttiva definisce la dimensione massima di un valore utilizzando un numero intero GDL.

*MinLength: integer. Questa direttiva definisce la lunghezza minima di un valore utilizzando un intero GDL non negativo.

*MaxLength: integer. Questa direttiva definisce la lunghezza massima di un valore utilizzando un intero GDL non negativo.

Nota Non tutte le direttive vengono riconosciute all'interno di tutti i modelli di tipo di dati.

In generale, se nessun modello può essere associato alla voce dell'attributo GDL, il valore di tale attributo verrà generato nello snapshot senza alcuna modifica all'interno di una sezione CDATA. Il CDATA deve risiedere come contenuto dell'elemento (ovvero l'elemento figlio) dell'elemento ATTRIBUTE.

Si supponga, ad esempio, che il parser non riesca a trovare un modello che descrive la voce dell'attributo GDL seguente.

*ModelName: "OEMName LaserJet "

La voce verrà quindi visualizzata nello snapshot come indicato di seguito.

    <GDL_ATTRIBUTE Name="*ModelName" 
        <![CDATA["OEMName LaserJet "]]></GDL_ATTRIBUTE>