XmlValidatingReader.Schemas プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > XmlValidatingReader.Schemas プロパティの意味・解説 

XmlValidatingReader.Schemas プロパティ

検証使用する XmlSchemaCollection を取得します

名前空間: System.Xml
アセンブリ: System.Xml (system.xml.dll 内)
構文構文

Public ReadOnly Property
 Schemas As XmlSchemaCollection
Dim instance As XmlValidatingReader
Dim value As XmlSchemaCollection

value = instance.Schemas
public XmlSchemaCollection Schemas { get; }
public:
property XmlSchemaCollection^ Schemas {
    XmlSchemaCollection^ get ();
}
/** @property */
public XmlSchemaCollection get_Schemas ()
public function get Schemas
 () : XmlSchemaCollection

プロパティ
検証使用する XmlSchemaCollection

解説解説

XmlSchemaCollection は、あらかじめ読み込んだ XML-Data Reduced (XDR) と XML スキーマ定義言語 (XSD) スキーマ保持します。このプロパティは、リーダースキーマキャッシュへのアクセス権与えリーダー毎回スキーマ読み込み直さず検証できますリーダーは、XmlSchemaCollection に何も追加しません。

XmlSchemaCollection に、他の名前空間参照する include 要素または import 要素格納する XML スキーマ (XSD) が含まれている場合は、他の名前空間スキーマ検証目的のためだけに読み込まれます。これらのスキーマ明示的にスキーマ コレクション追加されていない場合コレクション メソッドプロパティ使用してアクセスできません。たとえば、スキーマ ファイル b.xsd への参照を含むスキーマ ファイル a.xsdコレクション含まれている場合コレクション メソッドまたはプロパティ使用してアクセスできるためには、あらかじめスキーマ コレクションb.xsd追加する必要があります

Schemas プロパティ使用して XmlSchemaCollectionアクセスする場合、XmlSchemaCollection.Add メソッドは XmlValidatingReader.XmlResolver プロパティ指定された XmlResolver を使用します

メモメモ

最初Read 呼び出し前にスキーマXmlSchemaCollection追加する必要があります

詳細については、「XmlValidatingReader を使用した XML検証」を参照してください

使用例使用例

XmlSchemaCollection に格納されスキーマ使用して 3 つの XML ファイル検証する例を次に示します

Option Strict
Option Explicit

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Imports Microsoft.VisualBasic

Public Class SchemaCollectionSample
    Private doc1 As String
 = "booksSchema.xml"
    Private doc2 As String
 = "booksSchemaFail.xml"
    Private doc3 As String
 = "newbooks.xml"
    Private schema As String
 = "books.xsd"
    Private schema1 As String
 = "schema1.xdr"
    
    Private reader As XmlTextReader = Nothing
    Private vreader As XmlValidatingReader
 = Nothing
    Private m_success As Boolean
 = True
    
    Public Sub New()

            'Load the schema collection
            Dim xsc As New
 XmlSchemaCollection()
            xsc.Add("urn:bookstore-schema", schema)
 'XSD schema
            xsc.Add("urn:newbooks-schema", schema1)
 'XDR schema

            'Validate the files using schemas stored in the collection.
            Validate(doc1, xsc) 'Should pass.
            Validate(doc2, xsc) 'Should fail.   
            Validate(doc3, xsc) 'Should fail. 
        
    End Sub 'New
    
    Public Shared Sub Main()
        Dim validation As New
 SchemaCollectionSample()
    End Sub 'Main
    
    Private Sub Validate(filename As
 String, xsc As XmlSchemaCollection)
        
            m_success = True
            Console.WriteLine()
            Console.WriteLine("Validating XML file {0}...",
 filename.ToString())
            reader = New XmlTextReader(filename)
            
            'Create a validating reader.
            vreader = New XmlValidatingReader(reader)
            
            'Use the schemas stored in the schema collection.
            vreader.Schemas.Add(xsc)
            
            'Set the validation event handler.
            AddHandler vreader.ValidationEventHandler, AddressOf
 ValidationCallBack
            'Read and validate the XML data.
            While vreader.Read()
            End While
            Console.WriteLine("Validation finished. Validation
 {0}", IIf(m_success, "successful", "failed"))
            Console.WriteLine()

            'Close the reader.
            vreader.Close()

    End Sub 'Validate
       
    
    Private Sub ValidationCallBack(sender As
 Object, args As ValidationEventArgs)
        m_success = False
        
        Console.Write((ControlChars.CrLf & ControlChars.Tab & "Validation
 error: " & args.Message))
    End Sub 'ValidationCallBack
 
End Class 'SchemaCollectionSample
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

public class SchemaCollectionSample
{
  private const String doc1 = "booksSchema.xml";
  private const String doc2 = "booksSchemaFail.xml";
  private const String doc3 = "newbooks.xml";
  private const String schema = "books.xsd";
  private const String schema1 = "schema1.xdr";
  
  private XmlTextReader reader=null;
  private XmlValidatingReader vreader = null;
  private Boolean m_success = true;

  public SchemaCollectionSample ()
  {
    //Load the schema collection.
    XmlSchemaCollection xsc = new XmlSchemaCollection();
    xsc.Add("urn:bookstore-schema", schema);  //XSD schema
    xsc.Add("urn:newbooks-schema", schema1);  //XDR schema

    //Validate the files using schemas stored in the collection.
    Validate(doc1, xsc); //Should pass.
    Validate(doc2, xsc); //Should fail.   
    Validate(doc3, xsc); //Should fail. 

  }    

  public static void Main
 ()
  {
      SchemaCollectionSample validation = new SchemaCollectionSample();
  }

  private void Validate(String filename, XmlSchemaCollection
 xsc)
  {
   
     m_success = true;
     Console.WriteLine();
     Console.WriteLine("Validating XML file {0}...", filename.ToString());
     reader = new XmlTextReader (filename);
        
     //Create a validating reader.
    vreader = new XmlValidatingReader (reader);

     //Validate using the schemas stored in the schema collection.
     vreader.Schemas.Add(xsc);
 
     //Set the validation event handler
     vreader.ValidationEventHandler += new ValidationEventHandler
 (ValidationCallBack);
     //Read and validate the XML data.
     while (vreader.Read()){}
     Console.WriteLine ("Validation finished. Validation {0}", (m_success==true
 ? "successful" : "failed"));
     Console.WriteLine();

     //Close the reader.
     vreader.Close();

  } 


  private void ValidationCallBack (object sender,
 ValidationEventArgs args)
  {
     m_success = false;

     Console.Write("\r\n\tValidation error: " + args.Message);

  }  
}
#using <System.dll>
#using <System.Xml.dll>

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

public ref class SchemaCollectionSample
{
private:
   XmlTextReader^ reader;
   XmlValidatingReader^ vreader;
   Boolean m_success;

public:
   SchemaCollectionSample()
   {
      reader = nullptr;
      vreader = nullptr;
      m_success = true;

      //Load the schema collection.
      XmlSchemaCollection^ xsc = gcnew XmlSchemaCollection;
      String^ schema = "books.xsd";
      String^ schema1 = "schema1.xdr";
      xsc->Add( "urn:bookstore-schema", schema ); //XSD
 schema
      xsc->Add( "urn:newbooks-schema", schema1 ); //XDR
 schema
      String^ doc1 = "booksSchema.xml";
      String^ doc2 = "booksSchemaFail.xml";
      String^ doc3 = "newbooks.xml";

      //Validate the files using schemas stored in the collection.
      Validate( doc1, xsc ); //Should pass.
      Validate( doc2, xsc ); //Should fail.   
      Validate( doc3, xsc ); //Should fail. 
   }


private:
   void Validate( String^ filename, XmlSchemaCollection^ xsc )
   {
      m_success = true;
      Console::WriteLine();
      Console::WriteLine( "Validating XML file {0}...", filename );
      reader = gcnew XmlTextReader( filename );

      //Create a validating reader.
      vreader = gcnew XmlValidatingReader( reader );

      //Validate using the schemas stored in the schema collection.
      vreader->Schemas->Add( xsc );

      //Set the validation event handler
      vreader->ValidationEventHandler += gcnew ValidationEventHandler( this,
 &SchemaCollectionSample::ValidationCallBack );

      //Read and validate the XML data.
      while ( vreader->Read() )
      {}

      Console::WriteLine( "Validation finished. Validation {0}", (m_success
 == true ? (String^)"successful" : "failed")
 );
      Console::WriteLine();

      //Close the reader.
      vreader->Close();
   }

   void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^
 args )
   {
      m_success = false;
      Console::Write( "\r\n\tValidation error: {0}", args->Message );
   }

};

int main()
{
   gcnew SchemaCollectionSample;
}
import System.*;
import System.IO.*;
import System.Xml.*;
import System.Xml.Schema.*;

public class SchemaCollectionSample
{
    private String doc1 = "booksSchema.xml";
    private String doc2 = "booksSchemaFail.xml";
    private String doc3 = "newbooks.xml";
    private String schema = "books.xsd";
    private String schema1 = "schema1.xdr";
    private XmlTextReader reader = null;
    private XmlValidatingReader vReader = null;
    private boolean mSuccess = true;

    public SchemaCollectionSample() 
    {
        //Load the schema collection.
        XmlSchemaCollection xsc =  new XmlSchemaCollection();
        xsc.Add("urn:bookstore-schema", schema); //XSD schema
        xsc.Add("urn:newbooks-schema", schema1); //XDR schema

        //Validate the files using schemas stored in the collection.
        Validate(doc1, xsc); //Should pass.
        Validate(doc2, xsc); //Should fail.   
        Validate(doc3, xsc); //Should fail. 
    } //SchemaCollectionSample
    
    public static void main(String[]
 args)
    {
        SchemaCollectionSample validation = new SchemaCollectionSample();
    } //main

    private void Validate(String filename, XmlSchemaCollection
 xsc) 
    {
        mSuccess = true;
        Console.WriteLine();
        Console.WriteLine("Validating XML file {0}...", filename.ToString());
        reader = new XmlTextReader(filename);

        //Create a validating reader.
        vReader = new XmlValidatingReader(reader);

        //Validate using the schemas stored in the schema collection.
        vReader.get_Schemas().Add(xsc);

        //Set the validation event handler
        vReader.add_ValidationEventHandler
            (new ValidationEventHandler(ValidationCallBack));

        //Read and validate the XML data.
        while(vReader.Read()) {

        }
        Console.WriteLine("Validation finished. Validation {0}",
            (mSuccess == true) ? "successful" : "failed");
        Console.WriteLine();

        //Close the reader.
        vReader.Close();
    } //Validate

    private void ValidationCallBack(Object
 sender, ValidationEventArgs args)
    {
        mSuccess = false;
        Console.Write(("\r\n\tValidation error: " + args.get_Message()));
    } //ValidationCallBack 
} //SchemaCollectionSample

サンプルでは、次の 5 つ入力ファイル使用します

booksSchema.xml

booksSchemaFail.xml

newbooks.xml

<?xml version='1.0'?>
<bookstore xmlns="urn:newbooks-schema">
  <book genre="novel" style="hardcover">
    <title>The Handmaid's
 Tale</title>
    <author>
      <first-name>Margaret</first-name>
      <last-name>Atwood</last-name>
    </author>
    <price>19.95</price>
  </book>
  <book genre="novel" style="other">
    <title>The Poisonwood
 Bible</title>
    <author>
      <first-name>Barbara</first-name>
      <last-name>Kingsolver</last-name>
    </author>
    <price>11.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>

schema1.xdr

<?xml version="1.0"?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <ElementType name="first-name"
 content="textOnly"/>
  <ElementType name="last-name"
 content="textOnly"/>
  <ElementType name="name" content="textOnly"/>
  <ElementType name="price"
 content="textOnly" dt:type="fixed.14.4"/>
  <ElementType name="author"
 content="eltOnly" order="one">
    <group order="seq">
      <element type="name"/>
    </group>
    <group order="seq">
      <element type="first-name"/>
      <element type="last-name"/>
    </group>
  </ElementType>
  <ElementType name="title"
 content="textOnly"/>
  <AttributeType name="genre"
 dt:type="string"/>
  <AttributeType name="style"
 dt:type="enumeration"
        dt:values="paperback hardcover"/>
  <ElementType name="book" content="eltOnly">
    <attribute type="genre"
 required="yes"/>
    <attribute type="style"
 required="yes"/>
    <element type="title"/>
    <element type="author"/>
    <element type="price"/>
  </ElementType>
  <ElementType name="bookstore"
 content="eltOnly">
    <element type="book"/>
  </ElementType>
</Schema>
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

XmlValidatingReader.Schemas プロパティのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



XmlValidatingReader.Schemas プロパティのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS