XmlSchema 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
按照万维网联合会 (W3C) XML 架构第 1 部分:“结构”和 XML 架构第 2 部分:“数据类型”内容指定的 XML 架构内存中表示形式。
public ref class XmlSchema
public ref class XmlSchema : System::Xml::Schema::XmlSchemaObject
public class XmlSchema
public class XmlSchema : System.Xml.Schema.XmlSchemaObject
type XmlSchema = class
type XmlSchema = class
inherit XmlSchemaObject
Public Class XmlSchema
Public Class XmlSchema
Inherits XmlSchemaObject
- 继承
-
XmlSchema
- 继承
示例
以下示例创建架构定义。
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
class XmlSchemaExamples
{
public:
static void Main()
{
XmlSchema^ schema = gcnew XmlSchema();
// <xs:element name="cat" type="xs:string"/>
XmlSchemaElement^ elementCat = gcnew XmlSchemaElement();
schema->Items->Add(elementCat);
elementCat->Name = "cat";
elementCat->SchemaTypeName = gcnew XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="dog" type="xs:string"/>
XmlSchemaElement^ elementDog = gcnew XmlSchemaElement();
schema->Items->Add(elementDog);
elementDog->Name = "dog";
elementDog->SchemaTypeName = gcnew XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="redDog" substitutionGroup="dog" />
XmlSchemaElement^ elementRedDog = gcnew XmlSchemaElement();
schema->Items->Add(elementRedDog);
elementRedDog->Name = "redDog";
elementRedDog->SubstitutionGroup = gcnew XmlQualifiedName("dog");
// <xs:element name="brownDog" substitutionGroup ="dog" />
XmlSchemaElement^ elementBrownDog = gcnew XmlSchemaElement();
schema->Items->Add(elementBrownDog);
elementBrownDog->Name = "brownDog";
elementBrownDog->SubstitutionGroup = gcnew XmlQualifiedName("dog");
// <xs:element name="pets">
XmlSchemaElement^ elementPets = gcnew XmlSchemaElement();
schema->Items->Add(elementPets);
elementPets->Name = "pets";
// <xs:complexType>
XmlSchemaComplexType^ complexType = gcnew XmlSchemaComplexType();
elementPets->SchemaType = complexType;
// <xs:choice minOccurs="0" maxOccurs="unbounded">
XmlSchemaChoice^ choice = gcnew XmlSchemaChoice();
complexType->Particle = choice;
choice->MinOccurs = 0;
choice->MaxOccursString = "unbounded";
// <xs:element ref="cat"/>
XmlSchemaElement^ catRef = gcnew XmlSchemaElement();
choice->Items->Add(catRef);
catRef->RefName = gcnew XmlQualifiedName("cat");
// <xs:element ref="dog"/>
XmlSchemaElement^ dogRef = gcnew XmlSchemaElement();
choice->Items->Add(dogRef);
dogRef->RefName = gcnew XmlQualifiedName("dog");
XmlSchemaSet^ schemaSet = gcnew XmlSchemaSet();
schemaSet->ValidationEventHandler += gcnew ValidationEventHandler(ValidationCallbackOne);
schemaSet->Add(schema);
schemaSet->Compile();
XmlSchema^ compiledSchema;
for each (XmlSchema^ schema1 in schemaSet->Schemas())
{
compiledSchema = schema1;
}
XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager(gcnew NameTable());
nsmgr->AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
compiledSchema->Write(Console::Out, nsmgr);
}
static void ValidationCallbackOne(Object^ sender, ValidationEventArgs^ args)
{
Console::WriteLine(args->Message);
}
};
int main()
{
XmlSchemaExamples::Main();
return 0;
};
using System;
using System.Xml;
using System.Xml.Schema;
class XMLSchemaExamples
{
public static void Main()
{
XmlSchema schema = new XmlSchema();
// <xs:element name="cat" type="xs:string"/>
XmlSchemaElement elementCat = new XmlSchemaElement();
schema.Items.Add(elementCat);
elementCat.Name = "cat";
elementCat.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="dog" type="xs:string"/>
XmlSchemaElement elementDog = new XmlSchemaElement();
schema.Items.Add(elementDog);
elementDog.Name = "dog";
elementDog.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
// <xs:element name="redDog" substitutionGroup="dog" />
XmlSchemaElement elementRedDog = new XmlSchemaElement();
schema.Items.Add(elementRedDog);
elementRedDog.Name = "redDog";
elementRedDog.SubstitutionGroup = new XmlQualifiedName("dog");
// <xs:element name="brownDog" substitutionGroup ="dog" />
XmlSchemaElement elementBrownDog = new XmlSchemaElement();
schema.Items.Add(elementBrownDog);
elementBrownDog.Name = "brownDog";
elementBrownDog.SubstitutionGroup = new XmlQualifiedName("dog");
// <xs:element name="pets">
XmlSchemaElement elementPets = new XmlSchemaElement();
schema.Items.Add(elementPets);
elementPets.Name = "pets";
// <xs:complexType>
XmlSchemaComplexType complexType = new XmlSchemaComplexType();
elementPets.SchemaType = complexType;
// <xs:choice minOccurs="0" maxOccurs="unbounded">
XmlSchemaChoice choice = new XmlSchemaChoice();
complexType.Particle = choice;
choice.MinOccurs = 0;
choice.MaxOccursString = "unbounded";
// <xs:element ref="cat"/>
XmlSchemaElement catRef = new XmlSchemaElement();
choice.Items.Add(catRef);
catRef.RefName = new XmlQualifiedName("cat");
// <xs:element ref="dog"/>
XmlSchemaElement dogRef = new XmlSchemaElement();
choice.Items.Add(dogRef);
dogRef.RefName = new XmlQualifiedName("dog");
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne);
schemaSet.Add(schema);
schemaSet.Compile();
XmlSchema compiledSchema = null;
foreach (XmlSchema schema1 in schemaSet.Schemas())
{
compiledSchema = schema1;
}
XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
compiledSchema.Write(Console.Out, nsmgr);
}
public static void ValidationCallbackOne(object sender, ValidationEventArgs args)
{
Console.WriteLine(args.Message);
}
}
Option Explicit On
Option Strict On
Imports System.Xml
Imports System.Xml.Schema
Class XMLSchemaExamples
Public Shared Sub Main()
Dim schema As New XmlSchema()
' <xs:element name="cat" type="xs:string"/>
Dim elementCat As New XmlSchemaElement()
schema.Items.Add(elementCat)
elementCat.Name = "cat"
elementCat.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
' <xs:element name="dog" type="xs:string"/>
Dim elementDog As New XmlSchemaElement()
schema.Items.Add(elementDog)
elementDog.Name = "dog"
elementDog.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
' <xs:element name="redDog" substitutionGroup="dog" />
Dim elementRedDog As New XmlSchemaElement()
schema.Items.Add(elementRedDog)
elementRedDog.Name = "redDog"
elementRedDog.SubstitutionGroup = New XmlQualifiedName("dog")
' <xs:element name="brownDog" substitutionGroup ="dog" />
Dim elementBrownDog As New XmlSchemaElement()
schema.Items.Add(elementBrownDog)
elementBrownDog.Name = "brownDog"
elementBrownDog.SubstitutionGroup = New XmlQualifiedName("dog")
' <xs:element name="pets">
Dim elementPets As New XmlSchemaElement()
schema.Items.Add(elementPets)
elementPets.Name = "pets"
' <xs:complexType>
Dim complexType As New XmlSchemaComplexType()
elementPets.SchemaType = complexType
' <xs:choice minOccurs="0" maxOccurs="unbounded">
Dim choice As New XmlSchemaChoice()
complexType.Particle = choice
choice.MinOccurs = 0
choice.MaxOccursString = "unbounded"
' <xs:element ref="cat"/>
Dim catRef As New XmlSchemaElement()
choice.Items.Add(catRef)
catRef.RefName = New XmlQualifiedName("cat")
' <xs:element ref="dog"/>
Dim dogRef As New XmlSchemaElement()
choice.Items.Add(dogRef)
dogRef.RefName = New XmlQualifiedName("dog")
Dim schemaSet As New XmlSchemaSet()
AddHandler schemaSet.ValidationEventHandler, AddressOf ValidationCallbackOne
schemaSet.Add(schema)
schemaSet.Compile()
Dim compiledSchema As XmlSchema = Nothing
For Each schema1 As XmlSchema In schemaSet.Schemas()
compiledSchema = schema1
Next
Dim nsmgr As New XmlNamespaceManager(New NameTable())
nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema")
compiledSchema.Write(Console.Out, nsmgr)
End Sub
Public Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs)
Console.WriteLine(args.Message)
End Sub
End Class
为前面的代码示例生成以下 XML 文件。
<?xml version="1.0" encoding="IBM437"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="cat" type="xs:string"/>
<xs:element name="dog" type="xs:string"/>
<xs:element name="redDog" type="xs:string" substitutionGroup="dog"/>
<xs:element name="brownDog" type="xs:string" substitutionGroup ="dog" />
<xs:element name="pets">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="cat"/>
<xs:element ref="dog"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
注解
重要
- 不要使用来自未知或不受信任的源或位置的架构。 这样做会损害代码的安全性。
- XML 架构 (包括内联架构) 本质上容易受到拒绝服务攻击;在不受信任的方案中不接受它们。
- 使用 XmlSchema 类(如 XmlSchemaException 类)引发的异常可能包含不应在不受信任的方案中公开的敏感信息。 例如, SourceUri 属性 XmlSchemaException 返回导致异常的架构文件的 URI 路径。 SourceUri不应在不受信任的方案中公开该属性。 应正确处理异常,以便在不受信任的方案中不公开此敏感信息。
构造函数
XmlSchema() |
初始化 XmlSchema 类的新实例。 |
字段
InstanceNamespace |
XML 架构实例命名空间。 此字段为常数。 |
Namespace |
XML 架构命名空间。 此字段为常数。 |
属性
AttributeFormDefault |
获取或设置在架构的目标命名空间中声明的属性的窗体。 |
AttributeGroups |
获取架构中所有全局属性组的架构编译后值。 |
Attributes |
获取架构中所有属性的架构编译后值。 |
BlockDefault |
获取或设置 |
ElementFormDefault |
获取或设置在架构的目标命名空间中声明的元素的窗体。 |
Elements |
获取架构中所有元素的架构编译后值。 |
FinalDefault |
获取或设置 |
Groups |
获取架构中所有组的架构编译后值。 |
Id |
获取或设置字符串 ID。 |
Includes |
获取包含的和导入的架构的集合。 |
IsCompiled |
表明架构是否已编译。 |
Items |
获取架构中架构元素的集合,并在 |
LineNumber |
获取或设置 |
LinePosition |
获取或设置 |
Namespaces |
获取或设置用于此架构对象的 XmlSerializerNamespaces。 (继承自 XmlSchemaObject) |
Notations |
获取架构中所有注释的架构编译后值。 |
Parent |
获取或设置此 XmlSchemaObject 的父级。 (继承自 XmlSchemaObject) |
SchemaTypes |
获取架构中所有架构类型的架构编译后值。 |
SourceUri |
获取或设置加载了架构的文件的源位置。 (继承自 XmlSchemaObject) |
TargetNamespace |
获取或设置架构目标命名空间的统一资源标识符 (URI)。 |
UnhandledAttributes |
获取或设置不属于架构目标命名空间的限定属性。 |
Version |
获取或设置架构的版本。 |
方法
Compile(ValidationEventHandler) |
已过时。
已过时。
已过时。
将 XML 架构对象模型 (SOM) 编译为架构信息供验证使用。 用于检查以编程方式生成的 SOM 的语法和语义结构。 语义验证检查在编译期间执行。 |
Compile(ValidationEventHandler, XmlResolver) |
已过时。
已过时。
已过时。
将 XML 架构对象模型 (SOM) 编译为架构信息供验证使用。 用于检查以编程方式生成的 SOM 的语法和语义结构。 语义验证检查在编译期间执行。 |
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
Read(Stream, ValidationEventHandler) |
从提供的流中读取 XML 架构。 |
Read(TextReader, ValidationEventHandler) |
从提供的 TextReader 读取 XML 架构。 |
Read(XmlReader, ValidationEventHandler) |
从提供的 XmlReader 读取 XML 架构。 |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
Write(Stream) |
将 XML 架构写入提供的数据流中。 |
Write(Stream, XmlNamespaceManager) |
使用指定的 Stream 将“XML 架构”写入提供的 XmlNamespaceManager。 |
Write(TextWriter) |
将“XML 架构”写入提供的 TextWriter。 |
Write(TextWriter, XmlNamespaceManager) |
将“XML 架构”写入提供的 TextWriter。 |
Write(XmlWriter) |
将“XML 架构”写入提供的 XmlWriter。 |
Write(XmlWriter, XmlNamespaceManager) |
将“XML 架构”写入提供的 XmlWriter。 |