keyref 制約を識別します。W3C (World Wide Web Consortium) keyref 要素を表します。
この型のすべてのメンバの一覧については、XmlSchemaKeyref メンバ を参照してください。
System.Object
System.Xml.Schema.XmlSchemaObject
System.Xml.Schema.XmlSchemaAnnotated
System.Xml.Schema.XmlSchemaIdentityConstraint
System.Xml.Schema.XmlSchemaKeyref
Public Class XmlSchemaKeyref
Inherits XmlSchemaIdentityConstraint
[C#]
public class XmlSchemaKeyref : XmlSchemaIdentityConstraint
[C++]
public __gc class XmlSchemaKeyref : public
XmlSchemaIdentityConstraint
[JScript]
public class XmlSchemaKeyref extends XmlSchemaIdentityConstraint
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
属性値または要素値 (または値のセット) は、指定した key 要素または unique 要素の値と対応することを指定します。制約名はスキーマ内で一意である必要があります。
使用例
[Visual Basic, C#, C++] key 要素を作成する例を次に示します。
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
[C#]
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
[C++]
#using <mscorlib.dll>
#using <System.Xml.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;
__gc public class XmlSchemaObjectGenerator
{
public:
static void ValidationCallback(Object* /*sender*/, ValidationEventArgs * args)
{
if (args -> Severity == XmlSeverityType::Warning)
Console::Write(S"WARNING: ");
else if (args -> Severity == XmlSeverityType::Error)
Console::Write(S"ERROR: ");
Console::WriteLine(args -> Message);
}
}; // XmlSchemaObjectGenerator
int main()
{
XmlTextReader* tr = new XmlTextReader(S"empty.xsd");
XmlSchema * schema = XmlSchema::Read(tr, new ValidationEventHandler(schema, XmlSchemaObjectGenerator::ValidationCallback));
schema -> ElementFormDefault = XmlSchemaForm::Qualified;
schema -> TargetNamespace = S"http://www.example.com/Report";
{
XmlSchemaElement* element = new XmlSchemaElement();
element -> Name = S"purchaseReport";
XmlSchemaComplexType* element_complexType = new XmlSchemaComplexType();
XmlSchemaSequence* element_complexType_sequence = new XmlSchemaSequence();
{
XmlSchemaElement* element_complexType_sequence_element = new XmlSchemaElement();
element_complexType_sequence_element -> Name = S"region";
element_complexType_sequence_element -> SchemaTypeName = new XmlQualifiedName(S"String*", S"http://www.w3.org/2001/XMLSchema");
{
XmlSchemaKeyref* element_complexType_sequence_element_keyref = new XmlSchemaKeyref();
element_complexType_sequence_element_keyref -> Name = S"dummy2";
element_complexType_sequence_element_keyref -> Selector = new XmlSchemaXPath();
element_complexType_sequence_element_keyref -> Selector -> XPath = S"r:zip/r:part";
{
XmlSchemaXPath* field = new XmlSchemaXPath();
field -> XPath = S"@number";
element_complexType_sequence_element_keyref -> Fields->Add(field);
}
element_complexType_sequence_element_keyref -> Refer = new XmlQualifiedName(S"pNumKey", S"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 = S"periodEnding";
element_complexType_attribute -> SchemaTypeName = new XmlQualifiedName(S"date", S"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 = S"pNumKey";
element_key -> Selector = new XmlSchemaXPath();
element_key -> Selector -> XPath = S"r:parts/r:part";
{
XmlSchemaXPath* field = new XmlSchemaXPath();
field -> XPath = S"@number";
element_key -> Fields->Add(field);
}
element -> Constraints->Add(element_key);
}
schema -> Items->Add(element);
}
schema -> Write(Console::Out);
} // main
[Visual Basic, C#, C++] 前述のコード例に対して生成される 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>
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Xml.Schema
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Xml (System.Xml.dll 内)