XmlSchemaUnique Class
Represents the unique element from XML Schema as specified by the World Wide Web Consortium (W3C). This class can be used to identify a unique constraint among a set of elements.
Assembly: System.Xml (in System.Xml.dll)
System.Xml.Schema::XmlSchemaObject
System.Xml.Schema::XmlSchemaAnnotated
System.Xml.Schema::XmlSchemaIdentityConstraint
System.Xml.Schema::XmlSchemaUnique
| Name | Description | |
|---|---|---|
![]() | XmlSchemaUnique() | Initializes a new instance of the XmlSchemaUnique class. |
| Name | Description | |
|---|---|---|
![]() | Annotation | Gets or sets the annotation property.(Inherited from XmlSchemaAnnotated.) |
![]() | Fields | Gets the collection of fields that apply as children for the XML Path Language (XPath) expression selector.(Inherited from XmlSchemaIdentityConstraint.) |
![]() | Id | Gets or sets the string id.(Inherited from XmlSchemaAnnotated.) |
![]() | LineNumber | Gets or sets the line number in the file to which the schema element refers.(Inherited from XmlSchemaObject.) |
![]() | LinePosition | Gets or sets the line position in the file to which the schema element refers.(Inherited from XmlSchemaObject.) |
![]() | Name | Gets or sets the name of the identity constraint.(Inherited from XmlSchemaIdentityConstraint.) |
![]() | Namespaces | Gets or sets the XmlSerializerNamespaces to use with this schema object.(Inherited from XmlSchemaObject.) |
![]() | Parent | Gets or sets the parent of this XmlSchemaObject.(Inherited from XmlSchemaObject.) |
![]() | QualifiedName | Gets the qualified name of the identity constraint, which holds the post-compilation value of the QualifiedName property.(Inherited from XmlSchemaIdentityConstraint.) |
![]() | Selector | Gets or sets the XPath expression selector element.(Inherited from XmlSchemaIdentityConstraint.) |
![]() | SourceUri | Gets or sets the source location for the file that loaded the schema.(Inherited from XmlSchemaObject.) |
![]() | UnhandledAttributes | Gets or sets the qualified attributes that do not belong to the current schema's target namespace.(Inherited from XmlSchemaAnnotated.) |
| Name | Description | |
|---|---|---|
![]() | Equals(Object^) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
Specifies that an attribute or element value (or a combination of attribute or element values) must be unique within the specified scope. The constraint name must be unique within a schema.
The following example shows the use of the XmlSchemaUnique class.
#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; }
The following XML file is generated for this code example.
<?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>
Available since 1.1
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


