XmlSchemaKeyref Class

This class represents the keyref element from XMLSchema as specified by the World Wide Web Consortium (W3C).

Namespace: System.Xml.Schema
Assembly: System.Xml (in system.xml.dll)

'Declaration
Public Class XmlSchemaKeyref
	Inherits XmlSchemaIdentityConstraint
'Usage
Dim instance As XmlSchemaKeyref

public class XmlSchemaKeyref extends XmlSchemaIdentityConstraint
public class XmlSchemaKeyref extends XmlSchemaIdentityConstraint

Specifies that an attribute or element value (or set of values) has a correspondence with those of the specified key or unique element. The constraint name must be unique within a schema.

The following example creates a key element.

Imports System
Imports System.Collections
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Imports System.Xml.Schema

Public Class XmlSchemaObjectGenerator
   
   Private Shared Sub ValidationCallback(sender As Object, args As ValidationEventArgs)
      
      If args.Severity = XmlSeverityType.Warning Then
         Console.Write("WARNING: ")
      Else
         If args.Severity = XmlSeverityType.Error Then
            Console.Write("ERROR: ")
         End If 
      End If
      Console.WriteLine(args.Message)
   End Sub 'ValidationCallback
   
   
   
   Public Shared Sub Main()
      
      
      Dim tr As New XmlTextReader("empty.xsd")
      Dim schema As XmlSchema = XmlSchema.Read(tr, New ValidationEventHandler(AddressOf ValidationCallback))
      
      schema.ElementFormDefault = XmlSchemaForm.Qualified
      
      schema.TargetNamespace = "http://www.example.com/Report"
      
      If (True) Then
         
         Dim element As New XmlSchemaElement()
         element.Name = "purchaseReport"
         
         Dim element_complexType As New XmlSchemaComplexType()
         
         Dim element_complexType_sequence As New XmlSchemaSequence()
         
         If (True) Then
            
            Dim element_complexType_sequence_element As New XmlSchemaElement()
            element_complexType_sequence_element.Name = "region"
            element_complexType_sequence_element.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
            
            If (True) Then
               
               Dim element_complexType_sequence_element_keyref As New XmlSchemaKeyref()
               element_complexType_sequence_element_keyref.Name = "dummy2"
               element_complexType_sequence_element_keyref.Selector = New XmlSchemaXPath()
               element_complexType_sequence_element_keyref.Selector.XPath = "r:zip/r:part"
               
               If (True) Then
                  Dim field As New XmlSchemaXPath()
                  
                  field.XPath = "@number"
                  element_complexType_sequence_element_keyref.Fields.Add(field)
               End If
               element_complexType_sequence_element_keyref.Refer = New XmlQualifiedName("pNumKey", "http://www.example.com/Report")
               element_complexType_sequence_element.Constraints.Add(element_complexType_sequence_element_keyref)
            End If
            element_complexType_sequence.Items.Add(element_complexType_sequence_element)
         End If
         element_complexType.Particle = element_complexType_sequence
         
         If (True) Then
            
            Dim element_complexType_attribute As New XmlSchemaAttribute()
            element_complexType_attribute.Name = "periodEnding"
            element_complexType_attribute.SchemaTypeName = New XmlQualifiedName("date", "http://www.w3.org/2001/XMLSchema")
            element_complexType.Attributes.Add(element_complexType_attribute)
         End If
         element.SchemaType = element_complexType
         
         If (True) Then
            
            Dim element_key As New XmlSchemaKey()
            element_key.Name = "pNumKey"
            element_key.Selector = New XmlSchemaXPath()
            element_key.Selector.XPath = "r:parts/r:part"
            
            If (True) Then
               Dim field As New XmlSchemaXPath()
               
               field.XPath = "@number"
               element_key.Fields.Add(field)
            End If
            element.Constraints.Add(element_key)
         End If
         
         schema.Items.Add(element)
      End If
      
      schema.Write(Console.Out)
   End Sub 'Main 
End Class 'XmlSchemaObjectGenerator 

' Main() 

'XmlSchemaObjectGenerator

import System.*;
import System.Collections.*;
import System.IO.*;
import System.Xml.*;
import System.Xml.Xsl.*;
import System.Xml.Schema.*;

public class XmlSchemaObjectGenerator
 {        
    private static void ValidationCallback(Object sender,
        ValidationEventArgs args)
    {
        if (args.get_Severity().Equals(XmlSeverityType.Warning)) {
            Console.Write("WARNING: ");
        }
        else {        
            if (args.get_Severity().Equals(XmlSeverityType.Error)) {
                Console.Write("ERROR: ");
            }
        } 
        Console.WriteLine(args.get_Message());
    } //ValidationCallback

    public static void main(String[] args)
    {
        XmlTextReader tr = new XmlTextReader("empty.xsd");
        XmlSchema schema = XmlSchema.Read
            (tr, new ValidationEventHandler(ValidationCallback));
        schema.set_ElementFormDefault(XmlSchemaForm.Qualified);
        schema.set_TargetNamespace("http://www.example.com/Report");
        {
            XmlSchemaElement element = new XmlSchemaElement();
            element.set_Name("purchaseReport");
            XmlSchemaComplexType elementComplexType =  
                new XmlSchemaComplexType();
            XmlSchemaSequence elementComplexTypeSequence = 
                new XmlSchemaSequence();
            {
                XmlSchemaElement elementComplexTypeSequenceElement = 
                    new XmlSchemaElement();
                elementComplexTypeSequenceElement.set_Name("region");
                elementComplexTypeSequenceElement.set_SchemaTypeName
                    (new XmlQualifiedName("string", 
                    "http://www.w3.org/2001/XMLSchema"));
                {
                    XmlSchemaKeyref 
                        elementComplexTypeSequenceElementKeyref = 
                        new XmlSchemaKeyref();
                    elementComplexTypeSequenceElementKeyref.set_Name
                        ("dummy2");
                    elementComplexTypeSequenceElementKeyref.set_Selector
                        (new XmlSchemaXPath());
                    elementComplexTypeSequenceElementKeyref.get_Selector()
                        .set_XPath("r:zip/r:part");
                    {
                        XmlSchemaXPath field = new XmlSchemaXPath();
                        field.set_XPath("@number");
                        elementComplexTypeSequenceElementKeyref
                            .get_Fields().Add(field);
                    }
                    elementComplexTypeSequenceElementKeyref.set_Refer
                        (new XmlQualifiedName("pNumKey", 
                        "http://www.example.com/Report"));
                    elementComplexTypeSequenceElement.get_Constraints()
                        .Add(elementComplexTypeSequenceElementKeyref);
                }
                elementComplexTypeSequence.get_Items().Add
                    (elementComplexTypeSequenceElement);
            }
            elementComplexType.set_Particle(elementComplexTypeSequence);
            {
                XmlSchemaAttribute elementComplexTypeAttribute = 
                    new XmlSchemaAttribute();
                elementComplexTypeAttribute.set_Name("periodEnding");
                elementComplexTypeAttribute.set_SchemaTypeName
                    (new XmlQualifiedName("date", 
                    "http://www.w3.org/2001/XMLSchema"));
                elementComplexType.get_Attributes().Add
                    (elementComplexTypeAttribute);
            }
            element.set_SchemaType(elementComplexType);
            {
                XmlSchemaKey elementKey = new XmlSchemaKey();
                elementKey.set_Name("pNumKey");
                elementKey.set_Selector(new XmlSchemaXPath());
                elementKey.get_Selector().set_XPath("r:parts/r:part");
                {
                    XmlSchemaXPath field = new XmlSchemaXPath();
                    field.set_XPath("@number");
                    elementKey.get_Fields().Add(field);
                }
                element.get_Constraints().Add(elementKey);
            }
            schema.get_Items().Add(element);
        }
        schema.Write(Console.get_Out());
    } //main 
} //XmlSchemaObjectGenerator 

The following XML file is generated for the preceding code example.

<?xml version="1.0" encoding="IBM437"?>
<xs:schema xmlns:r="http://www.example.com/Report" elementFormDefault="qualified" targetNamespace="http://www.example.com/Report" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="purchaseReport">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="region" type="xs:string">
          <xs:keyref name="dummy2" refer="r:pNumKey">
            <xs:selector xpath="r:zip/r:part" />
            <xs:field xpath="@number" />
          </xs:keyref>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="periodEnding" type="xs:date" />
    </xs:complexType>
    <xs:key name="pNumKey">
      <xs:selector xpath="r:parts/r:part" />
      <xs:field xpath="@number" />
    </xs:key>
  </xs:element>
</xs:schema>

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0

Community Additions

ADD
Show: