Bindungsunterstützung für das anyAttribute-Element
Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.
.NET Framework stellt partielle Bindungsunterstützung für das <anyAttribute>-Element bereit.
Beim Generieren von Quellcode aus einem XML-Schemadokument wandelt Xsd.exe das <anyAttribute>-Feld in ein Feld des Typs XmlAttribute mit einem XmlAnyAttributeAttribute-Attribut um.
Erklärung
Über den <anyAttribute>-Platzhalter können beliebige Attribute (Attribut mit einem beliebigen Namen oder des einfachen Typs) mit ein paar Einschränkungen in einem angegebenen Element in einem XML-Instanzendokument angezeigt werden.
Beim Generieren von Quellcode aus einem XML-Schemadokument wandelt Xsd.exe das <anyAttribute>-Feld in ein Feld des Typs XmlAttribute mit einem XmlAnyAttributeAttribute-Attribut um. Über dieses Attribut kann eine Klasse beliebige XML-Attribute darstellen, ohne diese an nicht XML-spezifische Typen zu binden, die über andere mögliche Felder oder Eigenschaften der Klasse angegeben werden.
Beim Generieren eines XML-Schemadokuments aus einer Reihe von Klassen in einer Assembly führt Xsd.exe eine Rückübersetzung durch: Ein Feld oder eine Eigenschaft des Typs System.Xml.XmlAttribute mit dem XmlAnyAttributeAttribute-Attribut wird in ein <anyAttribut>-Element übersetzt.
namespace-Attribut und processContents-Attribut
Beim Generieren von XML-Schemadefinitionen oder Klassen werden das namespace-Attribut und das processContents-Attribut ignoriert. Wenn diese Attributwerte in einer ursprünglichen XML-Schemadefinition vorhanden sind und Xsd.exe Klassen aus der Definition und anschließend ein anderes XML-Schema aus den Klassen generiert, verfügt das <anyAttribute>-Element des generierten XML-Schemas daher nicht mehr über diese Attribute. Daher werden im letzteren Schema die folgenden Standardwerte übernommen:
namespace="##any"
: Das namespace-Attribut gibt die Namespaces an, in denen das Attribut definiert werden muss. Ein Wert von##any
lässt jeden Namespace zu.processContents="strict"
: Achten Sie bei der Überprüfung eines XML-Instanzendokuments auf Übereinstimmung mit dem entsprechenden angegebenen XML-Schema darauf, dass alle Elementtypen entsprechend den angegebenen Namespaces überprüft werden. Wenn ein Elementtyp nicht erkannt wird, schlägt die Validierung fehl.
Ebenso werden das namespace-Attribut und das processContents-Attribut bei der Deserialisierung von XML-Dokumenten in Objekte ignoriert. Stattdessen verhält sich die XmlSerializer-Klasse so, als ob die beiden Attribute auf die folgenden Werte festgelegt wurden:
namespace="##any"
: Dies ist der Standardwert.processContents="lax"
: Prüfen Sie bei der Überprüfung eines XML-Instanzendokuments auf Übereinstimmung mit dem entsprechenden angegebenen XML-Schema das Attribut nur, wenn der zugehörige Namespace abgerufen werden kann. Achten Sie andernfalls darauf, dass ein nicht erkanntes Attribut aus wohlgeformter XML besteht.
Hinweis: |
---|
Obwohl .NET Framework zur Laufzeit processContents="lax" voraussetzt, werden zur Bereitstellungszeit XML-Schemadefinitionen generiert, in denen das standardmäßige processContents="strict" implizit angegeben ist.
|
Xsd.exe und die XmlSerializer-Klasse stellen die gleichen Bindungen für das namespace-Attribut und das processContents-Attribut bereit, wenn sie im <any>-Element angezeigt werden.
Mögliche Attribute | Bindungsunterstützung |
---|---|
id |
Das Hilfsprogramm Xsd.exe ignoriert das id-Attribut, mit dem ein eindeutiger Bezeichner bereitgestellt werden soll. |
namespace |
Weitere Informationen finden Sie im Abschnitt Namespace-Attribut und processContents-Attribut in diesem Thema. |
processContents |
Siehe den Abschnitt über das namespace-Attribut und das processContents-Attribut in diesem Thema. |
Mögliche übergeordnete Elemente: <attributeGroup>, <complexType>, <extension>, <restriction>
Mögliche untergeordnete Elemente: <annotation>