XmlSchemaUnique Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje element ze schematu unique
XML określony przez World Wide Web Consortium (W3C). Ta klasa może służyć do identyfikowania unikatowego ograniczenia między zestawem elementów.
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
- Dziedziczenie
Przykłady
W poniższym przykładzie pokazano użycie XmlSchemaUnique
klasy .
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
ref class XMLSchemaExamples
{
private:
static void ValidationCallbackOne(Object^ sender, ValidationEventArgs^ args)
{
Console::WriteLine(args->Message);
}
public:
static void Main()
{
XmlSchema^ schema = gcnew XmlSchema();
// <xs:complexType name="customerOrderType">
XmlSchemaComplexType^ customerOrderType = gcnew XmlSchemaComplexType();
customerOrderType->Name = "customerOrderType";
// <xs:sequence>
XmlSchemaSequence^ sequence1 = gcnew XmlSchemaSequence();
// <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
XmlSchemaElement^ item = gcnew XmlSchemaElement();
item->MinOccurs = 0;
item->MaxOccursString = "unbounded";
item->Name = "item";
// <xs:complexType>
XmlSchemaComplexType^ ct1 = gcnew XmlSchemaComplexType();
// <xs:attribute name="itemID" type="xs:string"/>
XmlSchemaAttribute^ itemID = gcnew XmlSchemaAttribute();
itemID->Name = "itemID";
itemID->SchemaTypeName = gcnew 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 = gcnew XmlSchemaAttribute();
CustomerID->Name = "CustomerID";
CustomerID->SchemaTypeName = gcnew XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
customerOrderType->Attributes->Add(CustomerID);
// </xs:complexType>
schema->Items->Add(customerOrderType);
// <xs:element name="ordersByCustomer">
XmlSchemaElement^ ordersByCustomer = gcnew XmlSchemaElement();
ordersByCustomer->Name = "ordersByCustomer";
// <xs:complexType>
XmlSchemaComplexType^ ct2 = gcnew XmlSchemaComplexType();
// <xs:sequence>
XmlSchemaSequence^ sequence2 = gcnew XmlSchemaSequence();
// <xs:element name="customerOrders" type="customerOrderType" minOccurs="0" maxOccurs="unbounded" />
XmlSchemaElement^ customerOrders = gcnew XmlSchemaElement();
customerOrders->MinOccurs = 0;
customerOrders->MaxOccursString = "unbounded";
customerOrders->Name = "customerOrders";
customerOrders->SchemaTypeName = gcnew XmlQualifiedName("customerOrderType", "");
// </xs:sequence>
sequence2->Items->Add(customerOrders);
// </xs:complexType>
ct2->Particle = sequence2;
ordersByCustomer->SchemaType = ct2;
// <xs:unique name="oneCustomerOrdersforEachCustomerID">
XmlSchemaUnique^ element_unique = gcnew XmlSchemaUnique();
element_unique->Name = "oneCustomerOrdersforEachCustomerID";
// <xs:selector xpath="customerOrders"/>
element_unique->Selector = gcnew XmlSchemaXPath();
element_unique->Selector->XPath = "customerOrders";
// <xs:field xpath="@customerID"/>
XmlSchemaXPath^ field = gcnew XmlSchemaXPath();
field->XPath = "@customerID";
// </xs:unique>
element_unique->Fields->Add(field);
ordersByCustomer->Constraints->Add(element_unique);
// </xs:element>
schema->Items->Add(ordersByCustomer);
XmlSchemaSet^ schemaSet = gcnew XmlSchemaSet();
schemaSet->ValidationEventHandler += gcnew ValidationEventHandler(ValidationCallbackOne);
schemaSet->Add(schema);
schemaSet->Compile();
XmlSchema^ compiledSchema = nullptr;
for each (XmlSchema^ schema1 in schemaSet->Schemas())
{
compiledSchema = schema1;
}
XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager(gcnew NameTable());
nsmgr->AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
compiledSchema->Write(Console::Out, nsmgr);
}
};
int main()
{
XMLSchemaExamples::Main();
return 0;
}
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
Poniższy plik XML jest generowany dla tego przykładu kodu.
<?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>
Uwagi
Określa, że wartość atrybutu lub elementu (lub kombinacja wartości atrybutu lub elementu) muszą być unikatowe w obrębie określonego zakresu. Nazwa ograniczenia musi być unikatowa w schemacie.
Konstruktory
XmlSchemaUnique() |
Inicjuje nowe wystąpienie klasy XmlSchemaUnique. |
Właściwości
Annotation |
Pobiera lub ustawia |
Fields |
Pobiera kolekcję pól, które mają zastosowanie jako elementy podrzędne selektora wyrażeń języka XPath (XML Path Language). (Odziedziczone po XmlSchemaIdentityConstraint) |
Id |
Pobiera lub ustawia identyfikator ciągu. (Odziedziczone po XmlSchemaAnnotated) |
LineNumber |
Pobiera lub ustawia numer wiersza w pliku, do którego |
LinePosition |
Pobiera lub ustawia położenie wiersza w pliku, do którego |
Name |
Pobiera lub ustawia nazwę ograniczenia tożsamości. (Odziedziczone po XmlSchemaIdentityConstraint) |
Namespaces |
Pobiera lub ustawia XmlSerializerNamespaces obiekt do użycia z tym obiektem schematu. (Odziedziczone po XmlSchemaObject) |
Parent |
Pobiera lub ustawia element nadrzędny tego XmlSchemaObjectobiektu . (Odziedziczone po XmlSchemaObject) |
QualifiedName |
Pobiera kwalifikowaną nazwę ograniczenia tożsamości, która zawiera wartość |
Selector |
Pobiera lub ustawia element wyrażenia |
SourceUri |
Pobiera lub ustawia lokalizację źródłową pliku, który załadował schemat. (Odziedziczone po XmlSchemaObject) |
UnhandledAttributes |
Pobiera lub ustawia kwalifikowane atrybuty, które nie należą do docelowej przestrzeni nazw bieżącego schematu. (Odziedziczone po XmlSchemaAnnotated) |
Metody
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |