XmlSchemaSet Třída

Definice

Obsahuje mezipaměť schémat XML Schema Definition Language (XSD).Contains a cache of XML Schema definition language (XSD) schemas.

public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
Dědičnost
XmlSchemaSet

Příklady

Následující příklad ověřuje soubor XML pomocí schémat uložených v XmlSchemaSet .The following example validates an XML file using schemas stored in the XmlSchemaSet. Obor názvů v souboru XML, urn:bookstore-schema , určuje schéma, které XmlSchemaSet má být použito pro ověřování.The namespace in the XML file, urn:bookstore-schema, identifies which schema in the XmlSchemaSet to use for validation. Výstup z příkladu ukazuje, že soubor XML má dvě porušení schématu:Output from the example shows that the XML file has two schema violations:

  • První <book> prvek obsahuje <author> element, ale ne <title> nebo <price> element.The first <book> element contains an <author> element but no <title> or <price> element.

  • <author>V elementu v posledním <book> elementu chybí <first-name> <last-name> element and a místo něho má neplatný <name> element.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'.

VstupInput

Ukázka používá následující dva vstupní soubory.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>

Poznámky

Důležité

  • Nepoužívejte schémata z neznámých nebo nedůvěryhodných zdrojů nebo umístění.Do not use schemas from unknown or untrusted sources or locations. Tím dojde k ohrožení zabezpečení vašeho kódu.Doing so will compromise the security of your code.
  • Schémata XML (včetně vložených schémat) jsou z vlastního podstaty zranitelná kvůli útokům DOS (Denial of Service). Nepřijímejte je v nedůvěryhodných scénářích.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Chybové zprávy a výjimky ověřování schématu můžou vystavovat citlivé informace o modelu obsahu nebo cestách identifikátorů URI k souboru schématu.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Dejte pozor, abyste tyto informace nezveřejnili nedůvěryhodným volajícím.Be careful not to expose this information to untrusted callers.
  • Další požadavky na zabezpečení jsou uvedeny v části "požadavky na zabezpečení".Additional security considerations are covered in the "Security Considerations" section.

XmlSchemaSet je mezipaměť nebo knihovna, do které lze uložit schémata XML Schema Definition Language (XSD).XmlSchemaSet is a cache or library where you can store XML Schema definition language (XSD) schemas. XmlSchemaSet vylepšuje výkon ukládáním schémat do paměti místo přístupu ze souboru nebo adresy URL do mezipaměti.XmlSchemaSet improves performance by caching schemas in memory instead of accessing them from a file or a URL. Každé schéma je určeno identifikátorem URI oboru názvů a umístěním, které bylo zadáno při přidání schématu do sady.Each schema is identified by the namespace URI and location that was specified when the schema was added to the set. XmlReaderSettings.SchemasVlastnost přiřadíte objektu, kterou XmlSchemaSet by měl použít čtecí modul XML pro ověření dat.You use the XmlReaderSettings.Schemas property to assign the XmlSchemaSet object an XML reader should use for data validation.

Aspekty zabezpečeníSecurity Considerations

  • Nepoužívejte schémata z neznámých nebo nedůvěryhodných zdrojů.Do not use schemas from unknown or untrusted sources. Tím dojde k ohrožení zabezpečení vašeho kódu.Doing so will compromise the security of your code. Externí obory názvů nebo umístění, na které se odkazuje v zahrnutí, importu a předefinování prvků schématu, jsou vyřešeny s ohledem na základní identifikátor URI schématu, který obsahuje nebo importuje.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. Například pokud je základní identifikátor URI zahrnutí nebo importu schématu prázdný nebo null , jsou externí umístění vyřešena s ohledem na aktuální adresář.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. XmlUrlResolverTřída se ve výchozím nastavení používá k překladu externích schémat.The XmlUrlResolver class is used to resolve external schemas by default. Chcete-li zakázat řešení zahrnutí, importu a předefinování prvků schématu, nastavte XmlSchemaSet.XmlResolver vlastnost na hodnotu null .To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • XmlSchemaSetTřída používá System.Text.RegularExpressions.Regex třídu k analýze a porovnávání regulárních výrazů ve schématu XML.The XmlSchemaSet class uses the System.Text.RegularExpressions.Regex class to parse and match regular expressions in an XML schema. Ověření omezujících vlastností vzoru s regulárními výrazy ve schématu XML může zahrnovat zvýšené využití CPU a mělo by se jim vyhnout ve scénářích s vysokou dostupností.Validation of pattern facets with regular expressions in an XML schema may involve increased CPU usage and should be avoided in high availability scenarios.

  • Výjimky vyvolané v důsledku použití XmlSchemaSet třídy XmlSchemaException mohou obsahovat citlivé informace, které by neměly být vystaveny v nedůvěryhodných scénářích.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. Například SourceUri vlastnost objektu XmlSchemaException vrátí cestu identifikátoru URI k souboru schématu, který způsobil výjimku.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. SourceUriVlastnost by neměla být vystavena v nedůvěryhodných scénářích.The SourceUri property should not be exposed in untrusted scenarios. Výjimky by měly být správně zpracovány, aby tyto citlivé informace nebyly zveřejněny v nedůvěryhodných scénářích.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Konstruktory

XmlSchemaSet()

Inicializuje novou instanci XmlSchemaSet třídy.Initializes a new instance of the XmlSchemaSet class.

XmlSchemaSet(XmlNameTable)

Inicializuje novou instanci XmlSchemaSet třídy se zadaným parametrem XmlNameTable .Initializes a new instance of the XmlSchemaSet class with the specified XmlNameTable.

Vlastnosti

CompilationSettings

Získá nebo nastaví XmlSchemaCompilationSettings pro XmlSchemaSet .Gets or sets the XmlSchemaCompilationSettings for the XmlSchemaSet.

Count

Získá počet logických schémat XML schématu definice jazyka (XSD) v XmlSchemaSet .Gets the number of logical XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalAttributes

Získá všechny globální atributy ve všech schématech XSD (XML Schema Definition Language) v XmlSchemaSet .Gets all the global attributes in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalElements

Získá všechny globální prvky ve všech schématech XML schématu Definition Language (XSD) v XmlSchemaSet .Gets all the global elements in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalTypes

Načte všechny globální jednoduché a komplexní typy ve všech schématech XML schématu Definition Language (XSD) v XmlSchemaSet .Gets all of the global simple and complex types in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

IsCompiled

Získá hodnotu, která označuje, zda byla zkompilována schémata XML schématu definice jazyka (XSD) XmlSchemaSet .Gets a value that indicates whether the XML Schema definition language (XSD) schemas in the XmlSchemaSet have been compiled.

NameTable

Získá výchozí hodnotu XmlNameTable použitou XmlSchemaSet při načítání nových schémat schématu definice jazyka XML (XSD).Gets the default XmlNameTable used by the XmlSchemaSet when loading new XML Schema definition language (XSD) schemas.

XmlResolver

Nastaví XmlResolver použití k překladu oborů názvů nebo umístění, na které se odkazuje v zahrnutí a importu prvků schématu.Sets the XmlResolver used to resolve namespaces or locations referenced in include and import elements of a schema.

Metody

Add(String, String)

Přidá schéma jazyka XML definice schématu (XSD) na adrese URL zadané do XmlSchemaSet .Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

Add(String, XmlReader)

Přidá schéma jazyka XML definice schématu (XSD), které je součástí XmlReader do XmlSchemaSet .Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the XmlSchemaSet.

Add(XmlSchema)

Přidá daný XmlSchema do XmlSchemaSet .Adds the given XmlSchema to the XmlSchemaSet.

Add(XmlSchemaSet)

Přidá všechna schémata XSD (XML Schema Definition Language) v dané XmlSchemaSet do XmlSchemaSet .Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

Compile()

Zkompiluje schémata jazyka XML definice schématu (XSD) přidaná do XmlSchemaSet do jednoho logického schématu.Compiles the XML Schema definition language (XSD) schemas added to the XmlSchemaSet into one logical schema.

Contains(String)

Označuje, zda je schéma schématu jazyka XML (XSD) se zadaným identifikátorem URI cílového oboru názvů v XmlSchemaSet .Indicates whether an XML Schema definition language (XSD) schema with the specified target namespace URI is in the XmlSchemaSet.

Contains(XmlSchema)

Označuje, zda je zadaný objekt XSD (XML Schema Definition Language) XmlSchema v XmlSchemaSet .Indicates whether the specified XML Schema definition language (XSD) XmlSchema object is in the XmlSchemaSet.

CopyTo(XmlSchema[], Int32)

Zkopíruje všechny XmlSchema objekty z objektu XmlSchemaSet do daného pole, počínaje zadaným indexem.Copies all the XmlSchema objects from the XmlSchemaSet to the given array, starting at the given index.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.Serves as the default hash function.

(Zděděno od Object)
GetType()

Získá Type aktuální instanci.Gets the Type of the current instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří kopii aktuálního seznamu Object .Creates a shallow copy of the current Object.

(Zděděno od Object)
Remove(XmlSchema)

Odebere zadané schéma schématu definice jazyka XML (XSD) z XmlSchemaSet .Removes the specified XML Schema definition language (XSD) schema from the XmlSchemaSet.

RemoveRecursive(XmlSchema)

Odebere zadané schéma XSD (XML Schema Definition Language) a všechna schémata, která importuje z XmlSchemaSet .Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the XmlSchemaSet.

Reprocess(XmlSchema)

Znovu zpracuje schéma XML schématu definice jazyka (XSD), které již existuje v rozhraní XmlSchemaSet .Reprocesses an XML Schema definition language (XSD) schema that already exists in the XmlSchemaSet.

Schemas()

Vrátí kolekci všech schémat schématu definice jazyka XML (XSD) v XmlSchemaSet .Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

Schemas(String)

Vrátí kolekci všech schémat schématu definice jazyka XML (XSD) v XmlSchemaSet , které patří do daného oboru názvů.Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet that belong to the given namespace.

ToString()

Vrátí řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Zděděno od Object)

Události

ValidationEventHandler

Určuje obslužnou rutinu události pro příjem informací o chybách ověřování schématu XSD (XML Schema Definition Language).Specifies an event handler for receiving information about XML Schema definition language (XSD) schema validation errors.

Platí pro