XmlSchemaKeyref Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Данный класс представляет элемент keyref
из XML-схемы в соответствии с требованиями консорциума World Wide Web(W3C).
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.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 Path (XPath). (Унаследовано от XmlSchemaIdentityConstraint) |
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) |