XmlSchemaKeyref 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此类表示 keyref 由万维网联合会 (W3C) 指定的 XMLSchema 中的元素。
public ref class XmlSchemaKeyref : System::Xml::Schema::XmlSchemaIdentityConstraint
public class XmlSchemaKeyref : System.Xml.Schema.XmlSchemaIdentityConstraint
type XmlSchemaKeyref = class
inherit XmlSchemaIdentityConstraint
Public Class XmlSchemaKeyref
Inherits XmlSchemaIdentityConstraint
- 继承
示例
以下示例创建一个 key 元素。
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) |