HOW TO: Convalidare un documento XML utilizzando DTD, XDR o XSD

Traduzione articoli Traduzione articoli
Identificativo articolo: 307379 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I307379
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come applicare una DTD (Document Type Definition), uno schema XDT (XML-Data Reduced) o uno schema XSD (XML Schema Definition) a un documento XML (Extensible Markup Language). Nell'articolo viene inoltre descritto come utilizzare la classe XmlValidatingReader per convalidare un documento XML a fronte della grammatica specificata, oltre a come utilizzare la classe XmlSchemaCollection per inserire schemi nella memoria cache al fine di ottimizzare la convalida XML.

I documenti XML contengono elementi e attributi. Essi offrono un sistema potente e flessibile per scambiare dati fra applicazioni e organizzazioni. Per specificare la struttura e il contenuto consentiti di un documento XML, è possibile scrivere una DTD, uno schema XDR o uno schema XSD. Gli schemi XSD sono il metodo preferenziale per specificare la grammatica XML in Microsoft .NET Framework, ma sono supportati anche le DTD e gli schemi XDR.

Requisiti

In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Sintassi di Microsoft Visual C# .NET o Microsoft Visual Basic .NET
  • Concetti XML, compresi i problemi di convalida

Creare un documento XML

  1. Avviare Visual Studio .NET.
  2. Creare un nuovo file XML nel computer locale.
  3. Aggiungere i seguenti dati al documento XML per rappresentare un prodotto contenuto in un catalogo:
    <Product ProductID="123">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  4. Salvare il file con il nome di Product.xml in una nuova cartella chiamata C:\MyFolder.

Utilizzo di DTD

Creare la DTD e collegarla al documento XML

  1. Creare un file di testo vuoto in Visual Studio .NET.
  2. Aggiungere le seguenti dichiarazioni DTD al file per descrivere la grammatica del documento XML:
    <!ELEMENT Product (ProductName)>
    <!ATTLIST Product ProductID CDATA #REQUIRED>
    <!ELEMENT ProductName (#PCDATA)>
  3. Salvare il file con il nome di Product.dtd nella directory C:\MyFolder.
  4. Aprire Product.xml in Visual Studio .NET.
  5. Aggiungere la seguente istruzione DOCTYPE nella parte superiore del file Product.xml per collegare il documento XML al file DTD:
    <?xml version='1.0' encoding='utf-16'?>
    <!DOCTYPE Product SYSTEM "Product.dtd">
  6. Salvare il documento XML modificato con il nome di ProductWithDTD.xml.

Utilizzare la DTD per convalidare il documento XML

  1. In Visual Studio .NET creare un nuovo progetto applicazione console denominato ValidateXml utilizzando Visual C#.
  2. Aggiungere due istruzioni using all'inizio di Class1.cs come segue:
    using System.Xml;        // for XmlTextReader and XmlValidatingReader
    using System.Xml.Schema; // for XmlSchemaCollection (which is used later)
  3. In Class1.cs dichiarare un campo booleano denominato isValid prima dell'inizio del metodo Main, come segue:
    private static bool isValid = true;      // If a validation error occurs,
                                             // set this flag to false in the
                                             // validation event handler.
  4. Creare nel metodo Main un oggetto XmlTextReader per leggere un documento XML da un file di testo, quindi creare un oggetto XmlValidatingReader per la convalida di questi dati XML, come segue:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithDTD.xml");
    XmlValidatingReader v = new XmlValidatingReader(r);
  5. La proprietà ValidationType dell'oggetto XmlValidatingReader indica il tipo di convalida necessario, ossia DTD, XDR o Schema. Impostare la proprietà DTD come segue:
    v.ValidationType = ValidationType.DTD;
  6. Se si verificano errori di convalida, il visualizzatore genera un evento convalida. Aggiungere il seguente codice per registrare un gestore eventi convalida, mentre il metodo MyValidationEventHandler verrà implementato al passaggio 8:
    v.ValidationEventHandler += 
       new ValidationEventHandler(MyValidationEventHandler);
  7. Aggiungere il seguente codice per leggere e convalidare il documento XML. Se si verificano errori di convalida, viene chiamato MyValidationEventHandler per risolvere l'errore. Questo metodo imposta isValid su False (vedere il passaggio 8). È possibile verificare lo stato di isValid dopo la convalida, per vedere se il documento è o non è valido.
    while (v.Read())
    {
       // Can add code here to process the content.
    }
    v.Close();
    
    // Check whether the document is valid or invalid.
    if (isValid)
       Console.WriteLine("Document is valid");
    else
       Console.WriteLine("Document is invalid");
  8. Scrivere il metodo MyValidationEventHandler dopo il metodo Main, come segue:
    public static void MyValidationEventHandler(object sender, 
                                                ValidationEventArgs args) 
    {
       isValid = false;
       Console.WriteLine("Validation event\n" + args.Message);
    }
  9. Generare ed eseguire l'applicazione. L'applicazione dovrebbe indicare che il documento XML è valido.
  10. In Visual Studio .NET modificare ProductWithDTD.xml in modo da invalidarlo, eliminando ad esempio l'elemento "<ProductName>Rugby jersey</ProductName>".
  11. Eseguire nuovamente l'applicazione. Dovrebbe essere visualizzato un messaggio di errore analogo al seguente:
    Evento convalida
    Contenuto dell'elemento "Product" non valido. Previsto "ProductName".
    Si è verificato un errore nel file:///C:/MyFolder/ProductWithDTD.xml(4, 5).
    Documento non valido

Utilizzo dello schema XDR

Creare lo schema XDR e collegarlo al documento XML

  1. Creare un file di testo vuoto in Visual Studio .NET.
  2. Aggiungere le seguenti definizioni di schema XDR al file per descrivere la grammatica del documento XML:
    <?xml version='1.0' encoding='utf-16'?>
    <Schema name="ProductSchema" 
            xmlns="urn:schemas-microsoft-com:xml-data"
            xmlns:dt="urn:schemas-microsoft-com:datatypes">
    
       <ElementType name="Product" content="eltOnly">
          <attribute type="ProductID" required="yes"/>
          <element type="ProductName"/>
       </ElementType>
    
       <AttributeType name="ProductID" dt:type="int"/>
       <ElementType name="ProductName" dt:type="string"/>
    </Schema>
  3. Salvare il file con il nome di Product.xdr nella directory C:\MyFolder.
  4. Aprire il file Product.xml originale e collegarlo allo schema XDR come segue:
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" xmlns="x-schema:Product.xdr"> 
       <ProductName>Rugby jersey</ProductName>
    </Product>
  5. Salvare il documento XML modificato con il nome di ProductWithXDR.xml.

Utilizzare lo schema XDR per convalidare il documento XML

  1. Modificare l'applicazione come segue in modo che XmlTextReader carichi ProductWithXDR.xml:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXDR.xml");
  2. Impostare ValidationType su XDR in modo che il visualizzatore esegua la convalida XDR:
    v.ValidationType = ValidationType.XDR;
  3. Generare ed eseguire l'applicazione. L'applicazione dovrebbe indicare che il documento XML è valido.
  4. Modificare ProductWithXDR.xml per invalidarlo.
  5. Generare ed eseguire nuovamente l'applicazione. Dovrebbe essere visualizzato un errore di convalida.

Utilizzo dello schema XSD

Creare lo schema XSD e collegarlo al documento XML

  1. Creare un file di testo vuoto in Visual Studio .NET.
  2. Aggiungere le seguenti definizioni di schema XSD al file per descrivere la grammatica del documento XML:
    <?xml version='1.0' encoding='utf-16'?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <xsd:element name="Product">
          <xsd:complexType>
             <xsd:sequence>
                <xsd:element name="ProductName" type="xsd:string"/>
             </xsd:sequence>
             <xsd:attribute name="ProductID" use="required" type="xsd:int"/>
          </xsd:complexType>
       </xsd:element>
    </xsd:schema>
  3. Salvare il file con il nome di Product.xsd nella directory C:\MyFolder.
  4. Aprire il file Product.xml originale e collegarlo allo schema XSD come segue:
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  5. Salvare il documento XML modificato con il nome di ProductWithXSD.xml.

Utilizzare lo schema XSD per convalidare il documento XML

  1. Modificare l'applicazione come segue in modo che XmlTextReader carichi ProductWithXSD.xml:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXSD.xml");
  2. Impostare ValidationType a Schema in modo che il visualizzatore esegua la convalida dello schema XSD:
    v.ValidationType = ValidationType.Schema;
  3. Generare ed eseguire l'applicazione per utilizzare lo schema XSD per convalidare il documento XML.

Utilizzare gli spazi dei nomi nello schema XSD

  1. Aprire ProductWithXSD.xml in Visual Studio .NET.
  2. Dichiarare nel documento uno spazio dei nomi predefinito urn:MyNamespace. Modificare inoltre il collegamento XSD in modo che venga specificato lo schema XSD per convalidare il contenuto di tale spazio dei nomi:
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="urn:MyNamespace"
             xsi:schemaLocation="urn:MyNamespace Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  3. Salvare le modifiche apportate a ProductWithXSD.xml.
  4. Aprire Product.xsd. Modificare il tag iniziale <xsd:schema> come segue, in modo che lo schema si applichi allo spazio dei nomi urn:MyNamespace:
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace="urn:MyNamespace"
                elementFormDefault="qualified">
  5. Salvare le modifiche apportate a Product.xsd.
  6. Generare ed eseguire l'applicazione per utilizzare lo schema XSD per convalidare il documento XML.

Spazi dei nomi cache

  1. Aprire Class1.cs in Visual Studio .NET. Creare un oggetto XmlSchemaCollection all'inizio del metodo Main, come segue:
    XmlSchemaCollection cache = new XmlSchemaCollection();
  2. L'oggetto XmlSchemaCollection consente di inserire schemi nella memoria cache per migliorare le prestazioni. Ogni schema è associato a un diverso spazio dei nomi. Aggiungere il seguente codice per inserire Product.xsd nella cache:
    cache.Add("urn:MyNamespace", "C:\\MyFolder\\Product.xsd");
  3. Aggiungere la seguente istruzione dopo il codice impiegato per creare l'oggetto XmlValidatingReader, in modo da aggiungere la cache dello schema a XmlValidatingReader, perché il visualizzatore possa servirsi degli schemi in memoria:
    v.Schemas.Add(cache);

Verificare il funzionamento

  1. Generare ed eseguire l'applicazione.
  2. Verificare che il documento XML continui a essere convalidato a fronte dello schema XSD.
  3. Modificare ProductWithXSD.xml per invalidarlo.
  4. Verificare che l'applicazione rilevi questi errori di convalida.

Proprietà

Identificativo articolo: 307379 - Ultima modifica: venerdì 12 aprile 2002 - Revisione: 1.0
Le informazioni in questo articolo si applicano a
  • Microsoft Visual Studio .NET 2002 Professional Edition
Chiavi: 
kbhowto kbhowtomaster KB307379
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com