XmlReaderSettings.Schemas XmlReaderSettings.Schemas XmlReaderSettings.Schemas XmlReaderSettings.Schemas Property

Definición

Obtiene o establece el XmlSchemaSet que se va a utilizar al realizar la validación del esquema.Gets or sets the XmlSchemaSet to use when performing schema validation.

public:
 property System::Xml::Schema::XmlSchemaSet ^ Schemas { System::Xml::Schema::XmlSchemaSet ^ get(); void set(System::Xml::Schema::XmlSchemaSet ^ value); };
public System.Xml.Schema.XmlSchemaSet Schemas { get; set; }
member this.Schemas : System.Xml.Schema.XmlSchemaSet with get, set
Public Property Schemas As XmlSchemaSet

Valor de propiedad

XmlSchemaSet que se usará al realizar la validación de esquemas.The XmlSchemaSet to use when performing schema validation. El valor predeterminado es un objeto XmlSchemaSet vacíoThe default is an empty XmlSchemaSet object.

Ejemplos

El ejemplo siguiente usa el XmlReaderSettings objeto y el XmlReader.Create método para asociar un esquema a un documento XML.The example below uses the XmlReaderSettings object and the XmlReader.Create method to associate a schema with an XML document. El esquema se agrega a la Schemas propiedad de la XmlReaderSettings objeto.The schema is added to the Schemas property of the XmlReaderSettings object. El valor de la Schemas propiedad es una XmlSchemaSet objeto.The value of the Schemas property is an XmlSchemaSet object. El esquema se utiliza para validar que el documento XML se ajusta al modelo de contenido del esquema.The schema is used to validate that the XML document conforms to the schema content model. Las advertencias y errores de validación de esquema se controlan mediante el ValidationEventHandler definido en el XmlReaderSettings objeto.Schema validation errors and warnings are handled by the ValidationEventHandler defined in the XmlReaderSettings object.

#using <System.Xml.dll>

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

static void booksSettingsValidationEventHandler( Object^ /*sender*/, ValidationEventArgs^ e )
{
   if ( e->Severity == XmlSeverityType::Warning )
   {
      Console::Write( L"WARNING: " );
      Console::WriteLine( e->Message );
   }
   else
   if ( e->Severity == XmlSeverityType::Error )
   {
      Console::Write( L"ERROR: " );
      Console::WriteLine( e->Message );
   }
}

int main()
{
   XmlReaderSettings^ booksSettings = gcnew XmlReaderSettings;
   booksSettings->Schemas->Add( L"http://www.contoso.com/books", L"books.xsd" );
   booksSettings->ValidationType = ValidationType::Schema;
   booksSettings->ValidationEventHandler += gcnew ValidationEventHandler( booksSettingsValidationEventHandler );
   XmlReader^ books = XmlReader::Create( L"books.xml", booksSettings );
   while ( books->Read() )
   {}

   return 0;
}

using System;
using System.Xml;
using System.Xml.Schema;

class XmlSchemaSetExample
{
    static void Main()
    {
        XmlReaderSettings booksSettings = new XmlReaderSettings();
        booksSettings.Schemas.Add("http://www.contoso.com/books", "books.xsd");
        booksSettings.ValidationType = ValidationType.Schema;
        booksSettings.ValidationEventHandler += new ValidationEventHandler(booksSettingsValidationEventHandler);

        XmlReader books = XmlReader.Create("books.xml", booksSettings);

        while (books.Read()) { }
    }

    static void booksSettingsValidationEventHandler(object sender, ValidationEventArgs e)
    {
        if (e.Severity == XmlSeverityType.Warning)
        {
            Console.Write("WARNING: ");
            Console.WriteLine(e.Message);
        }
        else if (e.Severity == XmlSeverityType.Error)
        {
            Console.Write("ERROR: ");
            Console.WriteLine(e.Message);
        }
    }
}
Imports System
Imports System.Xml
Imports System.Xml.Schema

Class XmlSchemaSetExample

    Shared Sub Main()

        Dim booksSettings As XmlReaderSettings = New XmlReaderSettings()
        booksSettings.Schemas.Add("http://www.contoso.com/books", "books.xsd")
        booksSettings.ValidationType = ValidationType.Schema
        AddHandler booksSettings.ValidationEventHandler, New ValidationEventHandler(AddressOf booksSettingsValidationEventHandler)

        Dim books As XmlReader = XmlReader.Create("books.xml", booksSettings)

        While books.Read()

        End While

    End Sub

    Shared Sub booksSettingsValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)

        If e.Severity = XmlSeverityType.Warning Then
            Console.Write("WARNING: ")
            Console.WriteLine(e.Message)

        ElseIf e.Severity = XmlSeverityType.Error Then
            Console.Write("ERROR: ")
            Console.WriteLine(e.Message)
        End If

    End Sub

End Class

En el ejemplo se utiliza el archivo books.xml como entrada.The example uses the books.xml file as input.

<bookstore xmlns="http://www.contoso.com/books">
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <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" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

El ejemplo utiliza el archivo books.xsd como entrada.The example uses the books.xsd file as an input.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:unsignedShort" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Comentarios

Importante

  • No utilizar esquemas desde orígenes desconocidos o que no se confía o ubicaciones.Do not use schemas from unknown or untrusted sources or locations. Si lo hace, compromete la seguridad del código.Doing so will compromise the security of your code.
  • Esquemas XML (incluidos los esquemas en línea) son intrínsecamente vulnerables a la denegación de servicio; no los acepta en escenarios de confianza.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Excepciones y mensajes de error de validación de esquema pueden exponer información confidencial sobre el modelo de contenido o las rutas de acceso URI para el archivo de esquema.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Tenga cuidado de no exponer esta información a los llamadores de confianza.Be careful not to expose this information to untrusted callers.
  • Para obtener más información, consulte la sección "Consideraciones de seguridad".For additional information, see the "Security considerations" section.

La XmlSchemaSet clase sólo admite los esquemas (XSD).The XmlSchemaSet class only supports XML Schema definition language (XSD) schemas. XmlReader las instancias creadas por el Create método no se puede configurar para habilitar la validación de esquemas reducidos de datos XML (XDR).XmlReader instances created by the Create method cannot be configured to enable XML-Data Reduced (XDR) schema validation.

Consideraciones de seguridadSecurity considerations

  • No utilizar esquemas de orígenes desconocidos o que no se confía.Do not use schemas from unknown or untrusted sources. Si lo hace, compromete la seguridad del código.Doing so will compromise the security of your code. La XmlUrlResolver clase se utiliza para resolver los esquemas externos de forma predeterminada.The XmlUrlResolver class is used to resolve external schemas by default. Para deshabilitar la resolución de inclusión, importación y volver a definir los elementos de un esquema, establezca el XmlSchemaSet.XmlResolver propiedad null.To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • Las excepciones generadas como resultado de utilizar el XmlSchemaSet clase, como el XmlSchemaException clase puede contener información confidencial que no debe exponerse en escenarios de confianza.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. Por ejemplo, el SourceUri propiedad de un XmlSchemaException devuelve la ruta de acceso URI para el archivo de esquema que produjo la excepción.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. El SourceUri propiedad no debe exponerse en escenarios de confianza.The SourceUri property should not be exposed in untrusted scenarios. Las excepciones se deben administrar correctamente para que esta información confidencial no se expone en escenarios de confianza.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Se aplica a

Consulte también: