Supporto dell'associazione all'elemento restriction
Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.
In .NET Framework è incluso un supporto parziale per l'associazione all'elemento <restriction>.
L'unica restrizione relativa ai tipi per cui .NET Framework fornisce un'associazione esplicita è l'enumerazione di tipi semplici basati su stringa.
Descrizione
Il linguaggio XSD (XML Schema Definition) consente la derivazione di nuovi tipi dai tipi base sia mediante estensione che mediante restrizione. L'estensione viene utilizzata sempre per la derivazione di tipi complessi. La restrizione può essere utilizzata per la derivazione sia di tipi semplici che complessi, sebbene venga generalmente utilizzata per i tipi semplici.
Mentre le estensioni di tipo schema XML vengono sempre espresse in maniera esplicita mediante le definizioni di classe in .NET Framework, l'unica restrizione relativa ai tipi per cui esiste un'associazione è l'enumerazione di un tipo semplice, individuata mediante l'XPath simpleType/restriction/enumeration
. Inoltre, l'elemento <enumeration> viene associato solo quando applicato a tipi semplici basati su stringa.
Per tutti gli altri elementi figlio dell'elemento simpleType/restriction
(o quando l'enumerazione viene applicata a un tipo base non di tipo stringa), viene soddisfatta la condizione seguente:
Durante la generazione di codice sorgente da un documento XML Schema, Xsd.exe ignora la restrizione e produce semplicemente il tipo .NET Framework corrispondente al tipo semplice di base.
Con la classe XmlSerializer questa restrizione non viene osservata in caso di serializzazione di oggetti in XML e deserializzazione da XML.
Per un tipo complesso, se la restrizione riguarda contenuto complesso, mediante l'XPath complexType/complexContent/restriction
, Xsd.exe produce una classe vuota che eredita da una classe base. La classe XmlSerializer non osserva la restrizione. Xsd.exe non riconosce una restrizione che riguarda contenuto semplice, mediante l'XPath complexType/simpleContent/restriction
.
La restrizione è dotata di supporto per associazione limitato, tuttavia è rappresentata in modo completo nel modello SOM (Schema Object Model). Per la restrizione relativa ai tipi semplici è disponibile la classe XmlSchemaSimpleTypeRestriction, per la restrizione relativa a entrambi i tipi complessi sono disponibili le classi XmlSchemaComplexContentRestriction e XmlSchemaSimpleContentRestriction. Entrambe le classi XmlSchemaSimpleTypeRestriction e XmlSchemaSimpleContentRestriction sono, inoltre, dotate di una proprietà Facets in grado di contenere oggetti che rappresentano uno qualsiasi degli elementi figlio di simpleType/restriction
o simpleContent/restriction
.
Gli oggetti di queste classi possono essere utilizzati per creare un modello SOM a livello di codice che utilizza qualsiasi tipo di restrizione offerto nella specifica XML Schema. Tale modello può essere serializzato in e deserializzato da un documento XML Schema.
È inoltre possibile utilizzare un oggetto XmlValidatingReader per convalidare un documento dell'istanza XML sulla base di uno schema XML che utilizza la restrizione.
Attributi possibili | Supporto per l'associazione |
---|---|
base |
L'elemento <restriction> richiede un attributo base , il cui valore è rappresentato dal nome completo del tipo di dati base. Per la definizione dei tipi semplici mediante restrizione, il valore dell'attributo base determina se Xsd.exe riconosce la restrizione. Se la base è un tipo di dati di XML Schema che si associa a una stringa, Xsd.exe produce un tipo enum. In caso contrario, Xsd.exe produce un campo del tipo .NET Framework che si associa al valore base. Per informazioni sull'utilizzo dell'attributo base quando si definiscono tipi complessi mediante restrizione, vedere il testo precedente. |
id |
L'utilità Xsd.exe ignora l'attributo id che fornisce un identificatore univoco. |
Elementi padre possibili: <complexContent>, <simpleContent>, <simpleType>
Elementi figlio possibili: <all>, <annotation>, <anyAttribute>, <attribute>, <attributeGroup>, <choice>, <enumeration>, <fractionDigits>, <group>, <length>, <maxExclusive>, <maxInclusive>, <maxLength>, <minExclusive>, <minInclusive>, <minLength>, <pattern>, <sequence>, <simpleType>, <totalDigits>, <whiteSpace>
Vedere anche
Riferimento
XmlSchemaComplexContentRestriction
XmlSchemaSimpleContentRestriction
XmlSchemaSimpleTypeRestriction