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.
In .NET Framework è incluso un supporto per l'associazione all'attributo form.
Lo strumento Xsd.exe considera l'attributo XML form equivalente alla proprietà Form degli attributi XmlAttribute o XmlElement, sebbene il codice di serializzazione XML di .NET Framework riconosca per gli elementi un diverso valore predefinito, qualified.
Descrizione
Lo schema XML richiede che tutti gli elementi e gli attributi dichiarati globalmente (come figli dell'elemento <schema>) risultino qualificati come spazi dei nomi in un documento di istanza. Per gli elementi e gli attributi dichiarati localmente, ovvero all'interno di una definizione <complexType>, la qualifica come spazio dei nomi è facoltativa.
Per indicare se assegnare uno spazio dei nomi completo a un determinato elemento o attributo locale, viene aggiunto l'attributo form a una dichiarazione <element> o <attribute> locale. I valori possibili sono qualified e unqualified.
Il valore predefinito dell'attributoform viene ereditato dall'attributo elementFormDefault o attributeFormDefault dell'elemento principale <schema>. Per entrambi gli attributi il valore predefinito è unqualified.
In .NET Framework non esiste la possibilità di specificare l'attributo form a livello globale o di schema all'interno di una definizione di classe. Accade invece che, durante la generazione di un documento dello schema XML da un insieme di classi, Xsd.exe produca sempre uno schema XML che presenta le caratteristiche seguenti:
Non specifica attributeFormDefault, ripristinando il valore predefinito
unqualified.Specifica
elementFormDefault="qualified", utilizzando un valore predefinito diverso da quello dello schema XML.
Xsd.exe risponde ai valori alternativi per attributeFormDefault="qualified" e elementFormDefault="unqualified" impostando il form in base al campo.
A causa di queste limitazioni, Xsd.exe genera codice sorgente dall'attributo form, come illustrato nella tabella riportata di seguito.
attributo form |
form="completo" |
form="non completo" |
<attribute> |
Alla dichiarazione dell'attributo XmlAttribute viene passato un parametro |
Alla dichiarazione dell'attributo XmlAttribute per il campo <attribute> non viene passato alcun parametro form. |
<element> |
Non viene applicato alcun attributo XmlElement, a meno che non venga passato un parametro non correlato. |
Alla dichiarazione dell'attributo XmlElement per il campo <element> viene passato un parametro, |
Il parametro passato alla dichiarazione XmlAttribute o XmlElement imposta la proprietà Form, i cui valori possibili derivano dall'enumerazione XmlSchemaForm:
XmlSchemaForm.Qualified
XmlSchemaForm.Unqualified
XmlSchemaForm.None: valore predefinito
L'attributo form viene specificato solo nel codice sorgente se è impostato sul valore non predefinito nel documento dello schema XML originale, in base ai valori predefiniti di .NET Framework in contrapposizione ai valori predefiniti dello schema XML. Dal momento che l'attributo form esegue l'override degli attributi attributeFormDefault e elementFormDefault, uno schema che imposta form su un valore non predefinito a livello di <schema>, quindi lo imposta sul valore predefinito a livello di <attribute> o <element>, produce codice sorgente in cui non è specificato form. In termini di conformità dei documenti di istanza, il significato è sempre lo stesso.
Esempio
Documento dello schema XLM di input:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
<xsd:element name="ComplexInstance" type="MyComplexType"/>
<xsd:complexType name="MyComplexType">
<xsd:sequence>
<xsd:element name="elementQ" type="xsd:decimal" form="qualified" />
<xsd:element name="elementU" type="xsd:Date" form="unqualified" />
</xsd:sequence>
<xsd:attribute name="attributeQ" type="xsd:string" use="required" form="qualified"/>
<xsd:attribute name="attributeU" type="xsd:boolean" use="required" form="unqualified"/>
</xsd:complexType>
</xsd:schema>
Classe C# generata dal precedente documento dello schema XML:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("ComplexInstance", Namespace="http://example.org/", IsNullable=false)]
public class MyComplexType {
public System.Decimal elementQ;
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string elementU;
[System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string attributeQ;
[System.Xml.Serialization.XmlAttributeAttribute()]
public bool attributeU;
}
Documento dello schema XML generato da un assembly compilato dal codice sorgente C# precedente:
<xs:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ComplexInstance" type="tns:MyComplexType" />
<xs:complexType name="MyComplexType">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="elementQ" type="xs:decimal" />
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="elementU" type="xs:string" />
</xs:sequence>
<xs:attribute form="qualified" name="attributeQ" type="xs:string" />
<xs:attribute name="attributeU" type="xs:boolean" use="required" />
</xs:complexType>
</xs:schema>
Elementi contenitore possibili: <attribute>, <element>
Vedere anche
Riferimenti
System.Xml.Schema.XmlSchemaAttribute.Form
System.Xml.Schema.XmlSchemaElement.Form
.gif)
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.