XmlSchemaChoice 类

定义

按万维网联合会 (W3C) 指定的方式表示来自 XML 架构的 choice 元素(复合器)。 choice 仅允许它的一个子级出现在实例中。

public ref class XmlSchemaChoice : System::Xml::Schema::XmlSchemaGroupBase
public class XmlSchemaChoice : System.Xml.Schema.XmlSchemaGroupBase
type XmlSchemaChoice = class
    inherit XmlSchemaGroupBase
Public Class XmlSchemaChoice
Inherits XmlSchemaGroupBase
继承

示例

以下示例创建 一个 choice 元素。

#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="selected"/>
        XmlSchemaElement^ xeSelected = gcnew XmlSchemaElement();
        xeSelected->Name = "selected";
        schema->Items->Add(xeSelected);

        // <xs:element name="unselected"/>
        XmlSchemaElement^ xeUnselected = gcnew XmlSchemaElement();
        xeUnselected->Name = "unselected";
        schema->Items->Add(xeUnselected);

        // <xs:element name="dimpled"/>
        XmlSchemaElement^ xeDimpled = gcnew XmlSchemaElement();
        xeDimpled->Name = "dimpled";
        schema->Items->Add(xeDimpled);

        // <xs:element name="perforated"/>
        XmlSchemaElement^ xePerforated = gcnew XmlSchemaElement();
        xePerforated->Name = "perforated";
        schema->Items->Add(xePerforated);

        // <xs:complexType name="chadState">
        XmlSchemaComplexType^ chadState = gcnew XmlSchemaComplexType();
        schema->Items->Add(chadState);
        chadState->Name = "chadState";

        // <xs:choice minOccurs="1" maxOccurs="1">
        XmlSchemaChoice^ choice = gcnew XmlSchemaChoice();
        chadState->Particle = choice;
        choice->MinOccurs = 1;
        choice->MaxOccurs = 1;

        // <xs:element ref="selected"/>
        XmlSchemaElement^ elementSelected = gcnew XmlSchemaElement();
        choice->Items->Add(elementSelected);
        elementSelected->RefName = gcnew XmlQualifiedName("selected");

        // <xs:element ref="unselected"/>
        XmlSchemaElement^ elementUnselected = gcnew XmlSchemaElement();
        choice->Items->Add(elementUnselected);
        elementUnselected->RefName = gcnew XmlQualifiedName("unselected");

        // <xs:element ref="dimpled"/>
        XmlSchemaElement^ elementDimpled = gcnew XmlSchemaElement();
        choice->Items->Add(elementDimpled);
        elementDimpled->RefName = gcnew XmlQualifiedName("dimpled");

        // <xs:element ref="perforated"/>
        XmlSchemaElement^ elementPerforated = gcnew XmlSchemaElement();
        choice->Items->Add(elementPerforated);
        elementPerforated->RefName = gcnew XmlQualifiedName("perforated");

        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="selected"/>
        XmlSchemaElement xeSelected = new XmlSchemaElement();
        xeSelected.Name = "selected";
        schema.Items.Add(xeSelected);

        // <xs:element name="unselected"/>
        XmlSchemaElement xeUnselected = new XmlSchemaElement();
        xeUnselected.Name = "unselected";
        schema.Items.Add(xeUnselected);

        // <xs:element name="dimpled"/>
        XmlSchemaElement xeDimpled = new XmlSchemaElement();
        xeDimpled.Name = "dimpled";
        schema.Items.Add(xeDimpled);

        // <xs:element name="perforated"/>
        XmlSchemaElement xePerforated = new XmlSchemaElement();
        xePerforated.Name = "perforated";
        schema.Items.Add(xePerforated);

        // <xs:complexType name="chadState">
        XmlSchemaComplexType chadState = new XmlSchemaComplexType();
        schema.Items.Add(chadState);
        chadState.Name = "chadState";

        // <xs:choice minOccurs="1" maxOccurs="1">
        XmlSchemaChoice choice = new XmlSchemaChoice();
        chadState.Particle = choice;
        choice.MinOccurs = 1;
        choice.MaxOccurs = 1;

        // <xs:element ref="selected"/>
        XmlSchemaElement elementSelected = new XmlSchemaElement();
        choice.Items.Add(elementSelected);
        elementSelected.RefName = new XmlQualifiedName("selected");

        // <xs:element ref="unselected"/>
        XmlSchemaElement elementUnselected = new XmlSchemaElement();
        choice.Items.Add(elementUnselected);
        elementUnselected.RefName = new XmlQualifiedName("unselected");

        // <xs:element ref="dimpled"/>
        XmlSchemaElement elementDimpled = new XmlSchemaElement();
        choice.Items.Add(elementDimpled);
        elementDimpled.RefName = new XmlQualifiedName("dimpled");

        // <xs:element ref="perforated"/>
        XmlSchemaElement elementPerforated = new XmlSchemaElement();
        choice.Items.Add(elementPerforated);
        elementPerforated.RefName = new XmlQualifiedName("perforated");

        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 Strict On
Option Explicit On

Imports System.Xml
Imports System.Xml.Schema

Class XMLSchemaExamples
    Public Shared Sub Main()
        Dim schema As New XmlSchema()

        ' <xs:element name="selected"/>
        Dim xeSelected As New XmlSchemaElement()
        xeSelected.Name = "selected"
        schema.Items.Add(xeSelected)

        ' <xs:element name="unselected"/>
        Dim xeUnselected As New XmlSchemaElement()
        xeUnselected.Name = "unselected"
        schema.Items.Add(xeUnselected)

        ' <xs:element name="dimpled"/>
        Dim xeDimpled As New XmlSchemaElement()
        xeDimpled.Name = "dimpled"
        schema.Items.Add(xeDimpled)

        ' <xs:element name="perforated"/>
        Dim xePerforated As New XmlSchemaElement()
        xePerforated.Name = "perforated"
        schema.Items.Add(xePerforated)

        ' <xs:complexType name="chadState">
        Dim chadState As New XmlSchemaComplexType()
        schema.Items.Add(chadState)
        chadState.Name = "chadState"

        ' <xs:choice minOccurs="1" maxOccurs="1">
        Dim choice As New XmlSchemaChoice()
        chadState.Particle = choice
        choice.MinOccurs = 1
        choice.MaxOccurs = 1

        ' <xs:element ref="selected"/>
        Dim elementSelected As New XmlSchemaElement()
        choice.Items.Add(elementSelected)
        elementSelected.RefName = New XmlQualifiedName("selected")

        ' <xs:element ref="unselected"/>
        Dim elementUnselected As New XmlSchemaElement()
        choice.Items.Add(elementUnselected)
        elementUnselected.RefName = New XmlQualifiedName("unselected")

        ' <xs:element ref="dimpled"/>
        Dim elementDimpled As New XmlSchemaElement()
        choice.Items.Add(elementDimpled)
        elementDimpled.RefName = New XmlQualifiedName("dimpled")

        ' <xs:element ref="perforated"/>
        Dim elementPerforated As New XmlSchemaElement()
        choice.Items.Add(elementPerforated)
        elementPerforated.RefName = New XmlQualifiedName("perforated")

        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="selected"/>
    <xs:element name="unselected"/>
    <xs:element name="dimpled"/>
    <xs:element name="perforated"/>
    
    <xs:complexType name="chadState">
        <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element ref="selected"/>
            <xs:element ref="unselected"/>
            <xs:element ref="dimpled"/>
            <xs:element ref="perforated"/>
        </xs:choice>
    </xs:complexType>
</xs:schema>

构造函数

XmlSchemaChoice()

初始化 XmlSchemaChoice 类的新实例。

属性

Annotation

获取或设置 annotation 属性。

(继承自 XmlSchemaAnnotated)
Id

获取或设置字符串 ID。

(继承自 XmlSchemaAnnotated)
Items

获取复合器(choice)中包含的元素的集合,这些元素有:XmlSchemaElementXmlSchemaGroupRefXmlSchemaChoiceXmlSchemaSequenceXmlSchemaAny

LineNumber

获取或设置 schema 元素引用的文件中的行号。

(继承自 XmlSchemaObject)
LinePosition

获取或设置 schema 元素引用的文件中的行位置。

(继承自 XmlSchemaObject)
MaxOccurs

获取或设置粒子可发生的最大次数。

(继承自 XmlSchemaParticle)
MaxOccursString

获取设置字符串值形式的数字。 粒子可发生的最大次数。

(继承自 XmlSchemaParticle)
MinOccurs

获取或设置粒子可发生的最小次数。

(继承自 XmlSchemaParticle)
MinOccursString

获取设置字符串值形式的数字。 粒子可发生的最小次数。

(继承自 XmlSchemaParticle)
Namespaces

获取或设置用于此架构对象的 XmlSerializerNamespaces

(继承自 XmlSchemaObject)
Parent

获取或设置此 XmlSchemaObject 的父级。

(继承自 XmlSchemaObject)
SourceUri

获取或设置加载了架构的文件的源位置。

(继承自 XmlSchemaObject)
UnhandledAttributes

获取或设置不属于当前架构目标命名空间的限定特性。

(继承自 XmlSchemaAnnotated)

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于