XmlSchemaUnique Klasse

Definition

Stellt das unique Element aus dem XML-Schema dar, wie vom World Wide Web Consortium (W3C) angegeben. Diese Klasse kann verwendet werden, um eine eindeutige Einschränkung zwischen einer Reihe von Elementen zu identifizieren.

public ref class XmlSchemaUnique : System::Xml::Schema::XmlSchemaIdentityConstraint
public class XmlSchemaUnique : System.Xml.Schema.XmlSchemaIdentityConstraint
type XmlSchemaUnique = class
    inherit XmlSchemaIdentityConstraint
Public Class XmlSchemaUnique
Inherits XmlSchemaIdentityConstraint
Vererbung

Beispiele

Das folgende Beispiel zeigt die Verwendung der XmlSchemaUnique Klasse.

using System;
using System.Xml;
using System.Xml.Schema;

class XMLSchemaExamples
{
    public static void Main()
    {

        XmlSchema schema = new XmlSchema();

        // <xs:complexType name="customerOrderType">
        XmlSchemaComplexType customerOrderType = new XmlSchemaComplexType();
        customerOrderType.Name = "customerOrderType";

        // <xs:sequence>
        XmlSchemaSequence sequence1 = new XmlSchemaSequence();

        // <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
        XmlSchemaElement item = new XmlSchemaElement();
        item.MinOccurs = 0;
        item.MaxOccursString = "unbounded";
        item.Name = "item";

        // <xs:complexType>
        XmlSchemaComplexType ct1 = new XmlSchemaComplexType();

        // <xs:attribute name="itemID" type="xs:string"/>
        XmlSchemaAttribute itemID = new XmlSchemaAttribute();
        itemID.Name = "itemID";
        itemID.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

        // </xs:complexType>
        ct1.Attributes.Add(itemID);

        // </xs:element>
        item.SchemaType = ct1;

        // </xs:sequence>
        sequence1.Items.Add(item);
        customerOrderType.Particle = sequence1;

        // <xs:attribute name="CustomerID" type="xs:string"/>
        XmlSchemaAttribute CustomerID = new XmlSchemaAttribute();
        CustomerID.Name = "CustomerID";
        CustomerID.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

        customerOrderType.Attributes.Add(CustomerID);

        // </xs:complexType>
        schema.Items.Add(customerOrderType);

        // <xs:element name="ordersByCustomer">
        XmlSchemaElement ordersByCustomer = new XmlSchemaElement();
        ordersByCustomer.Name = "ordersByCustomer";

        // <xs:complexType>
        XmlSchemaComplexType ct2 = new XmlSchemaComplexType();

        // <xs:sequence>
        XmlSchemaSequence sequence2 = new XmlSchemaSequence();

        // <xs:element name="customerOrders" type="customerOrderType" minOccurs="0" maxOccurs="unbounded" />
        XmlSchemaElement customerOrders = new XmlSchemaElement();
        customerOrders.MinOccurs = 0;
        customerOrders.MaxOccursString = "unbounded";
        customerOrders.Name = "customerOrders";
        customerOrders.SchemaTypeName = new XmlQualifiedName("customerOrderType", "");

        // </xs:sequence>
        sequence2.Items.Add(customerOrders);

        // </xs:complexType>
        ct2.Particle = sequence2;
        ordersByCustomer.SchemaType = ct2;

        // <xs:unique name="oneCustomerOrdersforEachCustomerID">
        XmlSchemaUnique element_unique = new XmlSchemaUnique();
        element_unique.Name = "oneCustomerOrdersforEachCustomerID";

        // <xs:selector xpath="customerOrders"/>
        element_unique.Selector = new XmlSchemaXPath();
        element_unique.Selector.XPath = "customerOrders";

        // <xs:field xpath="@customerID"/>
        XmlSchemaXPath field = new XmlSchemaXPath();
        field.XPath = "@customerID";

        // </xs:unique>
        element_unique.Fields.Add(field);
        ordersByCustomer.Constraints.Add(element_unique);

        // </xs:element>
        schema.Items.Add(ordersByCustomer);

        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne);
        schemaSet.Add(schema);
        schemaSet.Compile();

        XmlSchema compiledSchema = null;

        foreach (XmlSchema schema1 in schemaSet.Schemas())
        {
            compiledSchema = schema1;
        }

        XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
        nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
        compiledSchema.Write(Console.Out, nsmgr);
    }

    public static void ValidationCallbackOne(object sender, ValidationEventArgs args)
    {
        Console.WriteLine(args.Message);
    }
}
Imports System.Xml
Imports System.Xml.Schema

Class XMLSchemaExamples
    Public Shared Sub Main()

        Dim schema As New XmlSchema()

        ' <xs:complexType name="customerOrderType">
        Dim customerOrderType As New XmlSchemaComplexType()
        customerOrderType.Name = "customerOrderType"

        ' <xs:sequence>
        Dim sequence1 As New XmlSchemaSequence()

        ' <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
        Dim item As New XmlSchemaElement()
        item.MinOccurs = 0
        item.MaxOccursString = "unbounded"
        item.Name = "item"

        ' <xs:complexType>
        Dim ct1 As New XmlSchemaComplexType()

        ' <xs:attribute name="itemID" type="xs:string"/>
        Dim itemID As New XmlSchemaAttribute()
        itemID.Name = "itemID"
        itemID.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")

        ' </xs:complexType>
        ct1.Attributes.Add(itemID)

        ' </xs:element>
        item.SchemaType = ct1

        ' </xs:sequence>
        sequence1.Items.Add(item)
        customerOrderType.Particle = sequence1

        ' <xs:attribute name="CustomerID" type="xs:string"/>
        Dim CustomerID As New XmlSchemaAttribute()
        CustomerID.Name = "CustomerID"
        CustomerID.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")

        customerOrderType.Attributes.Add(CustomerID)

        ' </xs:complexType>
        schema.Items.Add(customerOrderType)

        ' <xs:element name="ordersByCustomer">
        Dim ordersByCustomer As New XmlSchemaElement()
        ordersByCustomer.Name = "ordersByCustomer"

        ' <xs:complexType>
        Dim ct2 As New XmlSchemaComplexType()

        ' <xs:sequence>
        Dim sequence2 As New XmlSchemaSequence()

        ' <xs:element name="customerOrders" type="customerOrderType" minOccurs="0" maxOccurs="unbounded" />
        Dim customerOrders As New XmlSchemaElement()
        customerOrders.MinOccurs = 0
        customerOrders.MaxOccursString = "unbounded"
        customerOrders.Name = "customerOrders"
        customerOrders.SchemaTypeName = New XmlQualifiedName("customerOrderType", "")

        ' </xs:sequence>
        sequence2.Items.Add(customerOrders)

        ' </xs:complexType>
        ct2.Particle = sequence2
        ordersByCustomer.SchemaType = ct2

        ' <xs:unique name="oneCustomerOrdersforEachCustomerID">
        Dim element_unique As New XmlSchemaUnique()
        element_unique.Name = "oneCustomerOrdersforEachCustomerID"

        ' <xs:selector xpath="customerOrders"/>
        element_unique.Selector = New XmlSchemaXPath()
        element_unique.Selector.XPath = "customerOrders"

        ' <xs:field xpath="@customerID"/>
        Dim field As New XmlSchemaXPath()
        field.XPath = "@customerID"

        ' </xs:unique>
        element_unique.Fields.Add(field)
        ordersByCustomer.Constraints.Add(element_unique)

        ' </xs:element>
        schema.Items.Add(ordersByCustomer)

        Dim schemaSet As New XmlSchemaSet()
        AddHandler schemaSet.ValidationEventHandler, AddressOf ValidationCallbackOne

        schemaSet.Add(schema)
        schemaSet.Compile()

        Dim compiledSchema As XmlSchema = Nothing

        For Each schema1 As XmlSchema In schemaSet.Schemas()
            compiledSchema = schema1
        Next

        Dim nsmgr As New XmlNamespaceManager(New NameTable())
        nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema")
        compiledSchema.Write(Console.Out, nsmgr)

    End Sub

    Public Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs)
        Console.WriteLine(args.Message)
    End Sub
End Class

Die folgende XML-Datei wird für dieses Codebeispiel generiert.

<?xml version="1.0" encoding="IBM437"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="customerOrderType">
        <xs:sequence>
            <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="itemID" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="CustomerID" type="xs:string"/>
    </xs:complexType>

    <xs:element name="ordersByCustomer">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="customerOrders" type="customerOrderType" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
        <xs:unique name="oneCustomerOrdersforEachCustomerID">
            <xs:selector xpath="customerOrders"/>
            <xs:field xpath="@customerID"/>
        </xs:unique>
    </xs:element>
</xs:schema>

Hinweise

Gibt an, dass ein Attribut oder Elementwert (oder eine Kombination aus Attribut- oder Elementwerten) innerhalb des angegebenen Bereichs eindeutig sein muss. Der Einschränkungsname muss innerhalb eines Schemas eindeutig sein.

Konstruktoren

Name Beschreibung
XmlSchemaUnique()

Initialisiert eine neue Instanz der XmlSchemaUnique-Klasse.

Eigenschaften

Name Beschreibung
Annotation

Dient zum Abrufen oder Festlegen der annotation Eigenschaft.

(Geerbt von XmlSchemaAnnotated)
Fields

Ruft die Auflistung von Feldern ab, die als untergeordnete Elemente für den XPath-Ausdrucksmarkierer (XML Path Language) gelten.

(Geerbt von XmlSchemaIdentityConstraint)
Id

Dient zum Abrufen oder Festlegen der Zeichenfolgen-ID.

(Geerbt von XmlSchemaAnnotated)
LineNumber

Ruft die Zeilennummer in der Datei ab, auf die sich das Element bezieht, oder legt diese schema fest.

(Geerbt von XmlSchemaObject)
LinePosition

Ruft die Zeilenposition in der Datei ab, auf die sich das Element bezieht, oder legt diese schema fest.

(Geerbt von XmlSchemaObject)
Name

Dient zum Abrufen oder Festlegen des Namens der Identitätseinschränkung.

(Geerbt von XmlSchemaIdentityConstraint)
Namespaces

Dient zum Abrufen oder Festlegen der XmlSerializerNamespaces Verwendung mit diesem Schemaobjekt.

(Geerbt von XmlSchemaObject)
Parent

Dient zum Abrufen oder Festlegen des übergeordneten Elements dieser XmlSchemaObject.

(Geerbt von XmlSchemaObject)
QualifiedName

Ruft den qualifizierten Namen der Identitätseinschränkung ab, die den Wert nach der Kompilierung der QualifiedName Eigenschaft enthält.

(Geerbt von XmlSchemaIdentityConstraint)
Selector

Dient zum Abrufen oder Festlegen des XPath-Ausdruckselements selector .

(Geerbt von XmlSchemaIdentityConstraint)
SourceUri

Ruft den Quellspeicherort für die Datei ab, die das Schema geladen hat, oder legt diesen fest.

(Geerbt von XmlSchemaObject)
UnhandledAttributes

Ruft die qualifizierten Attribute ab, die nicht zum Zielnamespace des aktuellen Schemas gehören, oder legt diese fest.

(Geerbt von XmlSchemaAnnotated)

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: