XmlSchemaSet XmlSchemaSet XmlSchemaSet XmlSchemaSet Class

Определение

Содержит кэш схем языка определения схем XML (XSD).Contains a cache of XML Schema definition language (XSD) schemas.

public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
Наследование
XmlSchemaSetXmlSchemaSetXmlSchemaSetXmlSchemaSet

Примеры

В следующем примере XML-файл проверяется с использованием схем, хранимых в классе XmlSchemaSet.The following example validates an XML file using schemas stored in the XmlSchemaSet. Пространство имен в XML-файле, urn:bookstore-schema, идентифицирует схему в классе XmlSchemaSet для использования при проверке.The namespace in the XML file, urn:bookstore-schema, identifies which schema in the XmlSchemaSet to use for validation. Выходные данные примера показано, что XML-файле имеет два нарушение схемы:Output from the example shows that the XML file has two schema violations:

  • Первый <книги > содержит элемент <author > элемент, но не <title > или <цена > элемента.The first <book> element contains an <author> element but no <title> or <price> element.

  • <Автор > элемент за последние <книги > отсутствует элемент <-имя > и <последнего name > элемента и вместо этого имеет недопустимое <имя > элемент.The <author> element in the last <book> element is missing a <first-name> and <last-name> element and instead has an invalid <name> element.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::IO;

// Display any validation errors.
static void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^ e )
{
   Console::WriteLine( L"Validation Error:\n   {0}", e->Message );
   Console::WriteLine();
}

int main()
{
   // Create the XmlSchemaSet class.
   XmlSchemaSet^ sc = gcnew XmlSchemaSet;

   // Add the schema to the collection.
   sc->Add( L"urn:bookstore-schema", L"books.xsd" );

   // Set the validation settings.
   XmlReaderSettings^ settings = gcnew XmlReaderSettings;
   settings->ValidationType = ValidationType::Schema;
   settings->Schemas = sc;
   settings->ValidationEventHandler += gcnew ValidationEventHandler(ValidationCallBack);

   // Create the XmlReader object.
   XmlReader^ reader = XmlReader::Create( L"booksSchemaFail.xml", settings );

   // Parse the file. 
   while ( reader->Read() )
      ;

   return 1;
}
// The example displays output like the following:
//   Validation Error: 
//        The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author' 
//        in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in 
//        namespace 'urn:bookstore-schema'.
//
//    Validation Error: 
//       The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name' 
//       in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in 
//       namespace 'urn:bookstore-schema'.
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class Sample 
{
  public static void Main() {

    // Create the XmlSchemaSet class.
    XmlSchemaSet sc = new XmlSchemaSet();

    // Add the schema to the collection.
    sc.Add("urn:bookstore-schema", "books.xsd");

    // Set the validation settings.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ValidationType = ValidationType.Schema;
    settings.Schemas = sc;
    settings.ValidationEventHandler += ValidationCallBack;
 
    // Create the XmlReader object.
    XmlReader reader = XmlReader.Create("booksSchemaFail.xml", settings);

    // Parse the file. 
    while (reader.Read());
  }

  // Display any validation errors.
  private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine($"Validation Error:\n   {e.Message}\n");
  }
}
// The example displays output like the following:
//   Validation Error: 
//        The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author' 
//        in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in 
//        namespace 'urn:bookstore-schema'.
//
//    Validation Error: 
//       The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name' 
//       in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in 
//       namespace 'urn:bookstore-schema'.
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO

Public Module Sample 
  Public Sub Main() 

    ' Create the XmlSchemaSet class.
    Dim sc as XmlSchemaSet = new XmlSchemaSet()

    ' Add the schema to the collection.
    sc.Add("urn:bookstore-schema", "books.xsd")

    ' Set the validation settings.
    Dim settings as XmlReaderSettings = new XmlReaderSettings()
    settings.ValidationType = ValidationType.Schema
    settings.Schemas = sc
    AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
 
    ' Create the XmlReader object.
    Dim reader as XmlReader = XmlReader.Create("booksSchemaFail.xml", settings)

    ' Parse the file. 
    While reader.Read()
    End While
    
  End Sub

  ' Display any validation errors.
  Private Sub ValidationCallBack(sender as object, e as ValidationEventArgs) 
    Console.WriteLine($"Validation Error:{vbCrLf}   {e.Message}")
    Console.WriteLine()
  End Sub
End Module
' The example displays output like the following:
'   Validation Error: 
'        The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author' 
'        in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in 
'        namespace 'urn:bookstore-schema'.
'
'    Validation Error: 
'       The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name' 
'       in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in 
'       namespace 'urn:bookstore-schema'.

Входные данныеInput

Образец использует следующие два входных файла.The sample uses the following two input files.

booksSchemaFail.xml:booksSchemaFail.xml:

<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema">
  <book>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
  </book>
  <book genre="novel">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

books.xsd:books.xsd:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="urn:bookstore-schema"
    elementFormDefault="qualified"
    targetNamespace="urn:bookstore-schema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

Комментарии

Важно!

  • Не используйте схем из неизвестных или ненадежных источников или расположения.Do not use schemas from unknown or untrusted sources or locations. Это приведет к компрометации вашего кода.Doing so will compromise the security of your code.
  • XML-схем (включая встроенные схемы) по своей природе уязвимы для атак; не согласны с ними в сценариях без доверия.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Сообщения об ошибках проверки схемы и исключения может содержать конфиденциальные сведения о модели содержимого или пути URI к файлу схемы.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Следите за тем, чтобы не предоставить эти сведения для ненадежных вызывающих объектов.Be careful not to expose this information to untrusted callers.
  • Дополнительные вопросы безопасности описаны в разделе «Вопросы безопасности».Additional security considerations are covered in the "Security Considerations" section.

XmlSchemaSet является кэшем или библиотекой, где можно хранить схемами языка определения схемы XML.XmlSchemaSet is a cache or library where you can store XML Schema definition language (XSD) schemas. Использование XmlSchemaSet повышает производительность за счет кэширования схем в памяти вместо обращения к ним из файла или по URL-адресу.XmlSchemaSet improves performance by caching schemas in memory instead of accessing them from a file or a URL. Каждая схема идентифицируется URI пространства имен и расположения, который был указан при добавлении схемы в наборе.Each schema is identified by the namespace URI and location that was specified when the schema was added to the set. Использовании XmlReaderSettings.Schemas свойство, чтобы назначить XmlSchemaSet объект средства чтения XML следует использовать для проверки данных.You use the XmlReaderSettings.Schemas property to assign the XmlSchemaSet object an XML reader should use for data validation.

Вопросы безопасностиSecurity Considerations

  • Не использовать схемы из неизвестных или ненадежных источников.Do not use schemas from unknown or untrusted sources. Это приведет к компрометации вашего кода.Doing so will compromise the security of your code. Включить внешних пространств имен и расположений, на которые ссылается, импорта и переопределить элементы схемы разрешаются относительно базового URI схемы, их включающей или импортирующей.External namespaces or locations referenced in include, import, and redefine elements of a schema are resolved with respect to the base URI of the schema that includes or imports them. Например, если базовый URI Включение или импорт схемы является пустым или null, внешние расположения разрешаются относительно текущего каталога.For example, if the base URI of the including or importing schema is empty or null, the external locations are resolved with respect to the current directory. XmlUrlResolver Класс используется для разрешения внешних схем по умолчанию.The XmlUrlResolver class is used to resolve external schemas by default. Чтобы отключить разрешение include, импорта и переопределить элементы схемы, установите XmlSchemaSet.XmlResolver свойства null.To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • XmlSchemaSet Класс использует System.Text.RegularExpressions.Regex класс для анализа и регулярные выражения в XML-схемы.The XmlSchemaSet class uses the System.Text.RegularExpressions.Regex class to parse and match regular expressions in an XML schema. Проверка аспектов шаблонов с помощью регулярных выражений в схеме XML может привести больше ресурсов ЦП, поэтому следует избегать в сценариях высокого уровня доступности.Validation of pattern facets with regular expressions in an XML schema may involve increased CPU usage and should be avoided in high availability scenarios.

  • Исключения, возникшие в результате использования XmlSchemaSet класс, например XmlSchemaException класс может содержать конфиденциальные сведения, которые не должны предоставляться в сценариях без доверия.Exceptions raised as a result of using the XmlSchemaSet class, such as the XmlSchemaException class may contain sensitive information that should not be exposed in untrusted scenarios. Например SourceUri свойство XmlSchemaException Возвращает пути URI к файлу схемы, вызвавшего исключение.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. SourceUri Свойства не должны предоставляться в сценариях без доверия.The SourceUri property should not be exposed in untrusted scenarios. Исключения должны обрабатываться должным образом, таким образом, чтобы конфиденциальная информация не предоставляется в сценариях без доверия.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Конструкторы

XmlSchemaSet() XmlSchemaSet() XmlSchemaSet() XmlSchemaSet()

Инициализирует новый экземпляр класса XmlSchemaSet.Initializes a new instance of the XmlSchemaSet class.

XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable)

Инициализирует новый экземпляр класса XmlSchemaSet указанным значением XmlNameTable.Initializes a new instance of the XmlSchemaSet class with the specified XmlNameTable.

Свойства

CompilationSettings CompilationSettings CompilationSettings CompilationSettings

Возвращает или задает XmlSchemaCompilationSettings для объекта XmlSchemaSet.Gets or sets the XmlSchemaCompilationSettings for the XmlSchemaSet.

Count Count Count Count

Получает количество логических схем языка определения схем XML (XSD) в XmlSchemaSet.Gets the number of logical XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalAttributes GlobalAttributes GlobalAttributes GlobalAttributes

Получает все глобальные атрибуты всех схем языка определения схем XML (XSD) в XmlSchemaSet.Gets all the global attributes in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalElements GlobalElements GlobalElements GlobalElements

Получает все глобальные элементы всех схем языка определения схем XML (XSD) в XmlSchemaSet.Gets all the global elements in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalTypes GlobalTypes GlobalTypes GlobalTypes

Получает все глобальные простые и сложные типы из всех схем языка определения схем XML (XSD) в XmlSchemaSet.Gets all of the global simple and complex types in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

IsCompiled IsCompiled IsCompiled IsCompiled

Получает значение, указывающее, были ли скомпилированы все схемы языка определения схем XML (XSD) в XmlSchemaSet.Gets a value that indicates whether the XML Schema definition language (XSD) schemas in the XmlSchemaSet have been compiled.

NameTable NameTable NameTable NameTable

Получает имя XmlNameTable по умолчанию, используемое XmlSchemaSet при загрузке новых схем языка определения схем XML (XSD).Gets the default XmlNameTable used by the XmlSchemaSet when loading new XML Schema definition language (XSD) schemas.

XmlResolver XmlResolver XmlResolver XmlResolver

Задает XmlResolver, используемый при разрешении пространств имен и расположений, на которые ссылаются элементы включения и импорта схемы.Sets the XmlResolver used to resolve namespaces or locations referenced in include and import elements of a schema.

Методы

Add(String, String) Add(String, String) Add(String, String) Add(String, String)

Добавляет схему языка определения схем XML (XSD), расположенную по указанному URL-адресу, в XmlSchemaSet.Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

Add(String, XmlReader) Add(String, XmlReader) Add(String, XmlReader) Add(String, XmlReader)

Добавляет схему языка определения схем XML (XSD), содержащуюся в XmlReader, в XmlSchemaSet.Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the XmlSchemaSet.

Add(XmlSchema) Add(XmlSchema) Add(XmlSchema) Add(XmlSchema)

Добавляет указанную XmlSchema в XmlSchemaSet.Adds the given XmlSchema to the XmlSchemaSet.

Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet)

Добавляет все схемы языка определения схем XML (XSD), содержащиеся в заданном XmlSchemaSet, в XmlSchemaSet.Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

Compile() Compile() Compile() Compile()

Компилирует схемы языка определения схем XML (XSD) XmlSchemaSet в одну логическую схему.Compiles the XML Schema definition language (XSD) schemas added to the XmlSchemaSet into one logical schema.

Contains(String) Contains(String) Contains(String) Contains(String)

Определяет, находится ли схема языка определения схем XML (XSD) с указанным идентификатором URI целевого пространства имен в XmlSchemaSet.Indicates whether an XML Schema definition language (XSD) schema with the specified target namespace URI is in the XmlSchemaSet.

Contains(XmlSchema) Contains(XmlSchema) Contains(XmlSchema) Contains(XmlSchema)

Определяет, находится ли указанный объект языка определения схем XML (XSD) XmlSchema в XmlSchemaSet.Indicates whether the specified XML Schema definition language (XSD) XmlSchema object is in the XmlSchemaSet.

CopyTo(XmlSchema[], Int32) CopyTo(XmlSchema[], Int32) CopyTo(XmlSchema[], Int32) CopyTo(XmlSchema[], Int32)

Копирует все объекты XmlSchema из XmlSchemaSet в заданный массив, начиная с заданного индекса.Copies all the XmlSchema objects from the XmlSchemaSet to the given array, starting at the given index.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(XmlSchema) Remove(XmlSchema) Remove(XmlSchema) Remove(XmlSchema)

Удаляет заданную схему языка определения схем XML (XSD) из XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema from the XmlSchemaSet.

RemoveRecursive(XmlSchema) RemoveRecursive(XmlSchema) RemoveRecursive(XmlSchema) RemoveRecursive(XmlSchema)

Удаляет указанную схему языка определения схем XML (XSD) и все импортируемые ей схемы из XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the XmlSchemaSet.

Reprocess(XmlSchema) Reprocess(XmlSchema) Reprocess(XmlSchema) Reprocess(XmlSchema)

Выполняет повторную обработку схемы языка определения схем XML (XSD), которая уже находится в XmlSchemaSet.Reprocesses an XML Schema definition language (XSD) schema that already exists in the XmlSchemaSet.

Schemas() Schemas() Schemas() Schemas()

Возвращает коллекцию всех схем языка определения схем XML (XSD), содержащихся в XmlSchemaSet.Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

Schemas(String) Schemas(String) Schemas(String) Schemas(String)

Возвращает коллекцию всех схем языка определения схем XML (XSD) в XmlSchemaSet, принадлежащих заданному пространству имен.Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet that belong to the given namespace.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

События

ValidationEventHandler ValidationEventHandler ValidationEventHandler ValidationEventHandler

Указывает обработчик событий, получающий сведения об ошибках проверки схем языка определения схем XML (XSD).Specifies an event handler for receiving information about XML Schema definition language (XSD) schema validation errors.

Применяется к