XmlSchemaKeyref 类  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此类按万维网联合会 (W3C) 指定的方式表示来自 XML 架构的 keyref 元素。
public ref class XmlSchemaKeyref : System::Xml::Schema::XmlSchemaIdentityConstraintpublic class XmlSchemaKeyref : System.Xml.Schema.XmlSchemaIdentityConstrainttype XmlSchemaKeyref = class
    inherit XmlSchemaIdentityConstraintPublic Class XmlSchemaKeyref
Inherits XmlSchemaIdentityConstraint- 继承
示例
以下示例创建一个 key 元素。
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::Collections;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Xsl;
using namespace System::Xml::Schema;
public ref class XmlSchemaObjectGenerator
{
private:
    static void ValidationCallback( Object^ /*sender*/, ValidationEventArgs^ args )
    {
        if ( args->Severity == XmlSeverityType::Warning )
            Console::Write( "WARNING: " );
        else
            if ( args->Severity == XmlSeverityType::Error )
                Console::Write( "ERROR: " );
        Console::WriteLine( args->Message );
    }
    // XmlSchemaObjectGenerator
    int main()
    {
        XmlTextReader^ tr = gcnew XmlTextReader( "empty.xsd" );
        XmlSchema^ schema = XmlSchema::Read( tr, gcnew ValidationEventHandler( XmlSchemaObjectGenerator::ValidationCallback ) );
        schema->ElementFormDefault = XmlSchemaForm::Qualified;
        schema->TargetNamespace = "http://www.example.com/Report";
        {
            XmlSchemaElement^ element = gcnew XmlSchemaElement;
            element->Name = "purchaseReport";
            XmlSchemaComplexType^ element_complexType = gcnew XmlSchemaComplexType;
            XmlSchemaSequence^ element_complexType_sequence = gcnew XmlSchemaSequence;
            {
                XmlSchemaElement^ element_complexType_sequence_element = gcnew XmlSchemaElement;
                element_complexType_sequence_element->Name = "region";
                element_complexType_sequence_element->SchemaTypeName = gcnew XmlQualifiedName( "String*","http://www.w3.org/2001/XMLSchema" );
                {
                    XmlSchemaKeyref^ element_complexType_sequence_element_keyref = gcnew XmlSchemaKeyref;
                    element_complexType_sequence_element_keyref->Name = "dummy2";
                    element_complexType_sequence_element_keyref->Selector = gcnew XmlSchemaXPath;
                    element_complexType_sequence_element_keyref->Selector->XPath = "r:zip/r:part";
                    {
                        XmlSchemaXPath^ field = gcnew XmlSchemaXPath;
                        field->XPath = "@number";
                        element_complexType_sequence_element_keyref->Fields->Add( field );
                    }
                    element_complexType_sequence_element_keyref->Refer = gcnew XmlQualifiedName( "pNumKey","http://www.example.com/Report" );
                    element_complexType_sequence_element->Constraints->Add( element_complexType_sequence_element_keyref );
                }
                element_complexType_sequence->Items->Add( element_complexType_sequence_element );
            }
            element_complexType->Particle = element_complexType_sequence;
            {
                XmlSchemaAttribute^ element_complexType_attribute = gcnew XmlSchemaAttribute;
                element_complexType_attribute->Name = "periodEnding";
                element_complexType_attribute->SchemaTypeName = gcnew XmlQualifiedName( "date","http://www.w3.org/2001/XMLSchema" );
                element_complexType->Attributes->Add( element_complexType_attribute );
            }
            element->SchemaType = element_complexType;
            {
                XmlSchemaKey^ element_key = gcnew XmlSchemaKey;
                element_key->Name = "pNumKey";
                element_key->Selector = gcnew XmlSchemaXPath;
                element_key->Selector->XPath = "r:parts/r:part";
                {
                    XmlSchemaXPath^ field = gcnew XmlSchemaXPath;
                    field->XPath = "@number";
                    element_key->Fields->Add( field );
                }
                element->Constraints->Add( element_key );
            }
            schema->Items->Add( element );
        }
        schema->Write( Console::Out );
        return 0;
    } // main
};
using System;
using System.Collections;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.Schema;
public class XmlSchemaObjectGenerator {
    private static void ValidationCallback(object sender, ValidationEventArgs args ){
    if(args.Severity == XmlSeverityType.Warning)
        Console.Write("WARNING: ");
    else if(args.Severity == XmlSeverityType.Error)
        Console.Write("ERROR: ");
    Console.WriteLine(args.Message);
    }
    public static void Main() {
      XmlTextReader tr = new XmlTextReader("empty.xsd");
        XmlSchema schema = XmlSchema.Read(tr, new ValidationEventHandler(ValidationCallback));
            schema.ElementFormDefault = XmlSchemaForm.Qualified;
            schema.TargetNamespace = "http://www.example.com/Report";
            {
        XmlSchemaElement element = new XmlSchemaElement();
        element.Name = "purchaseReport";
        XmlSchemaComplexType element_complexType = new XmlSchemaComplexType();
        XmlSchemaSequence element_complexType_sequence = new XmlSchemaSequence();
            {
        XmlSchemaElement element_complexType_sequence_element = new XmlSchemaElement();
        element_complexType_sequence_element.Name = "region";
        element_complexType_sequence_element.SchemaTypeName =
                new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
            ;
            {
        XmlSchemaKeyref element_complexType_sequence_element_keyref = 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";
            {
                XmlSchemaXPath field = new XmlSchemaXPath();
                
                field.XPath = "@number";
                element_complexType_sequence_element_keyref.Fields.Add(field);
            }
        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);
            }
        element_complexType_sequence.Items.Add(element_complexType_sequence_element);
            }
        element_complexType.Particle = element_complexType_sequence;
            {
        XmlSchemaAttribute element_complexType_attribute = 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);
            }
        element.SchemaType = element_complexType;
            {
        XmlSchemaKey element_key = new XmlSchemaKey();
        element_key.Name = "pNumKey";
        element_key.Selector = new XmlSchemaXPath();
            element_key.Selector.XPath = "r:parts/r:part";
            {
                XmlSchemaXPath field = new XmlSchemaXPath();
                
                field.XPath = "@number";
                element_key.Fields.Add(field);
            }
        element.Constraints.Add(element_key);
            }
                schema.Items.Add(element);
            }
        schema.Write(Console.Out);
    }/* Main() */
}
//XmlSchemaObjectGenerator
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
   
   
   
   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
End Class
' Main() 
'XmlSchemaObjectGenerator
为前面的代码示例生成以下 XML 文件。
<?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>
注解
指定属性或元素值 (或值集) 与指定 key 或 unique 元素的对应关系。 约束名称在架构中必须是唯一的。
构造函数
| XmlSchemaKeyref() | 初始化 XmlSchemaKeyref 类的新实例。 | 
属性
| Annotation | 获取或设置  | 
| Fields | 获取应用为“XML 路径语言”(XPath) 表达式选择器的子级的域集合。(继承自 XmlSchemaIdentityConstraint) | 
| Id | 获取或设置字符串 ID。(继承自 XmlSchemaAnnotated) | 
| LineNumber | 获取或设置  | 
| LinePosition | 获取或设置  | 
| Name | 获取或设置标识约束的名称。(继承自 XmlSchemaIdentityConstraint) | 
| Namespaces | 获取或设置用于此架构对象的 XmlSerializerNamespaces。(继承自 XmlSchemaObject) | 
| Parent | 获取或设置此 XmlSchemaObject 的父级。(继承自 XmlSchemaObject) | 
| QualifiedName | 获取标识约束的限定名,此标识约束保留  | 
| Refer | 获取或设置键的名称(此约束在另一个简单或复杂的类型中引用)。 | 
| Selector | 获取或设置 XPath 表达式  | 
| SourceUri | 获取或设置加载了架构的文件的源位置。(继承自 XmlSchemaObject) | 
| UnhandledAttributes | 获取或设置不属于当前架构目标命名空间的限定特性。(继承自 XmlSchemaAnnotated) | 
方法
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) |