Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Convalida mediante XmlSchemaSet

XmlSchemaSet è una cache o una libreria in cui è possibile archiviare gli schemi XSD (XML Schema Definition Language). XmlSchemaSet consente di migliorare le prestazioni grazie alla memorizzazione degli schemi nella cache. In tal modo non è più necessario accedere ad essi da un file o un URL. Ogni schema nel XmlSchemaSet viene identificato dall'URI dello spazio dei nomi e dalla posizione dello schema specificati quando lo schema è stato aggiunto al XmlSchemaSet. La proprietà Schemas assegna l'oggetto XmlSchemaSet da utilizzare.

Nell'esempio seguente un file XML viene convalidato utilizzando gli schemi memorizzati in XmlSchemaSet. Lo spazio dei nomi nel file XML, urn:bookstore-schema, consente di identificare gli schemi in XmlSchemaSet da utilizzare per la convalida.


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 += new 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: {0}", e.Message);
  }
}


as3tta56.collapse_all(it-it,VS.110).gifInput

Nell'esempio vengono utilizzati i seguenti due file di input:

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


<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>


as3tta56.collapse_all(it-it,VS.110).gifOutput

Errore di convalida: l'elemento "book" nello spazio dei nomi "urn:bookstore-schema" presenta l'elemento figlio "author" non valido nello spazio dei nomi "urn:bookstore-schema". Previsto "title" nello spazio dei nomi "urn:bookstore-schema".

Errore di convalida: l'elemento "author" nello spazio dei nomi "urn:bookstore-schema" presenta l'elemento figlio "name" non valido nello spazio dei nomi "urn:bookstore-schema". Previsto "first-name" nello spazio dei nomi "urn:bookstore-schema".

Mostra: