Extensions.GetSchemaInfo Extensions.GetSchemaInfo Extensions.GetSchemaInfo Extensions.GetSchemaInfo Method

定義

検証済みノードのスキーマ検証後の infoset (PSVI) を取得します。Gets the post-schema-validation infoset (PSVI) of a validated node.

オーバーロード

GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute)

検証済み属性のスキーマ検証後の infoset (PSVI) を取得します。Gets the post-schema-validation infoset (PSVI) of a validated attribute.

GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement)

検証済み要素のスキーマ検証後の infoset (PSVI) を取得します。Gets the post-schema-validation infoset (PSVI) of a validated element.

注釈

検証した後、 XDocument、スキーマ検証後の infoset を取得することができます、XElementまたはXAttributeドキュメントに格納されています。After you have validated an XDocument, you can retrieve the post-schema-validation infoset for an XElement or XAttribute that is contained in the document.

取得した後、IXmlSchemaInfoオブジェクトを使用することができます、SchemaAttributeまたはSchemaElementを部分検証型を取得するプロパティ (XmlSchemaElementまたはXmlSchemaAttribute)。After retrieving the IXmlSchemaInfo object, you can use the SchemaAttribute or SchemaElement properties to get a partial validation type (XmlSchemaElement or XmlSchemaAttribute). 部分検証型は、属性またはサブ ツリーの検証に使用できます。You can use the partial validation types to validate an attribute or a sub-tree.

GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute) GetSchemaInfo(XAttribute)

検証済み属性のスキーマ検証後の infoset (PSVI) を取得します。Gets the post-schema-validation infoset (PSVI) of a validated attribute.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Xml::Schema::IXmlSchemaInfo ^ GetSchemaInfo(System::Xml::Linq::XAttribute ^ source);
public static System.Xml.Schema.IXmlSchemaInfo GetSchemaInfo (this System.Xml.Linq.XAttribute source);
static member GetSchemaInfo : System.Xml.Linq.XAttribute -> System.Xml.Schema.IXmlSchemaInfo
<Extension()>
Public Function GetSchemaInfo (source As XAttribute) As IXmlSchemaInfo

パラメーター

source
XAttribute XAttribute XAttribute XAttribute

検証済みの XAttributeAn XAttribute that has been previously validated.

戻り値

IXmlSchemaInfo のスキーマ検証後の infoset を含む XAttributeA IXmlSchemaInfo that contains the post-schema-validation infoset for an XAttribute.

注釈

使用することができます、IXmlSchemaInfo検証済み属性の特定の特性を判断するには、このメソッドによって返されます。You can use the IXmlSchemaInfo returned by this method to determine certain characteristics of a validated attribute. たとえば、属性が xsd 属性の既定値から付属しているかを確認できます。For example, you can determine if the attribute came from a default attribute value in an XSD.

使用する、SchemaAttribute部分検証型を取得するプロパティ (XmlSchemaAttribute)。You use the SchemaAttribute property to get a partial validation type (XmlSchemaAttribute). ドキュメント全体を検証せずに属性を再検証するのにには、これを使用できます。You can use it to revalidate an attribute without validating an entire document.

このプロパティの例は、次を参照してください。Validateします。For an example of this property, see Validate.

GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement) GetSchemaInfo(XElement)

検証済み要素のスキーマ検証後の infoset (PSVI) を取得します。Gets the post-schema-validation infoset (PSVI) of a validated element.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Xml::Schema::IXmlSchemaInfo ^ GetSchemaInfo(System::Xml::Linq::XElement ^ source);
public static System.Xml.Schema.IXmlSchemaInfo GetSchemaInfo (this System.Xml.Linq.XElement source);
static member GetSchemaInfo : System.Xml.Linq.XElement -> System.Xml.Schema.IXmlSchemaInfo
<Extension()>
Public Function GetSchemaInfo (source As XElement) As IXmlSchemaInfo

パラメーター

source
XElement XElement XElement XElement

検証済みの XElementAn XElement that has been previously validated.

戻り値

IXmlSchemaInfo のスキーマ検証後の infoset (PSVI) を含む XElementA IXmlSchemaInfo that contains the post-schema-validation infoset (PSVI) for an XElement.

次の例は、PSVI をツリーを設定します。The following example populates the tree with a PSVI. 検証後は、すべての要素と、ツリーで PSVI に従って無効な属性が出力されます。After validation, it prints all elements and attributes in the tree that are invalid according to the PSVI.


                static void DumpInvalidNodes(XElement el)  
{  
    if (el.GetSchemaInfo().Validity != XmlSchemaValidity.Valid)  
        Console.WriteLine("Invalid Element {0}",  
            el.AncestorsAndSelf()  
            .InDocumentOrder()  
            .Aggregate("", (s, i) => s + "/" + i.Name.ToString()));  
    foreach (XAttribute att in el.Attributes())  
        if (att.GetSchemaInfo().Validity != XmlSchemaValidity.Valid)  
            Console.WriteLine("Invalid Attribute {0}",  
                att  
                .Parent  
                .AncestorsAndSelf()  
                .InDocumentOrder()  
                .Aggregate("",  
                    (s, i) => s + "/" + i.Name.ToString()) + "/@" + att.Name.ToString()  
                );  
    foreach (XElement child in el.Elements())  
        DumpInvalidNodes(child);  
}  

static void Main(string[] args)  
{  
    string xsdMarkup =  
         @"<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>  
   <xsd:simpleType name='GCType'>  
    <xsd:restriction base='xsd:token'>  
     <xsd:enumeration value='AAA'/>  
     <xsd:enumeration value='BBB'/>  
    </xsd:restriction>  
   </xsd:simpleType>  
   <xsd:element name='Root'>  
    <xsd:complexType>  
     <xsd:sequence>  
      <xsd:element name='Child1' minOccurs='1' maxOccurs='1'>  
       <xsd:complexType>  
        <xsd:sequence>  
         <xsd:element name='GrandChild1' type='GCType'/>  
         <xsd:element name='GrandChild2' type='GCType'/>  
         <xsd:element name='GrandChild3' type='GCType'/>  
        </xsd:sequence>  
       </xsd:complexType>  
      </xsd:element>  
     </xsd:sequence>  
    </xsd:complexType>  
   </xsd:element>  
  </xsd:schema>";  

    XmlSchemaSet schemas = new XmlSchemaSet();  
    schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));  

    XDocument doc1 = new XDocument(  
        new XElement("Root",  
            new XElement("Child1",  
                new XElement("GrandChild1", "AAA"),  
                new XElement("GrandChild2", "ZZZ"),  
                new XElement("GrandChild3", "ZZZ")  
            )  
        )  
    );  

    Console.WriteLine("Validating doc1 ...");  
    bool errors = false;  
    doc1.Validate(schemas, (sender, e) =>  
    {  
        Console.WriteLine(e.Message);  
        errors = true;  
    }, true);  
    Console.WriteLine("doc1 {0}", errors ? "did not validate" : "validated");  
    DumpInvalidNodes(doc1.Root);  
}  

                Private Sub DumpInvalidNodes(ByVal el As XElement)  
    If el.GetSchemaInfo.Validity <> XmlSchemaValidity.Valid Then  
        Console.WriteLine("Invalid Element {0}", _  
            el _  
            .AncestorsAndSelf _  
            .InDocumentOrder() _  
            .Aggregate("", _  
                Function(ByVal s, ByVal i) s + "/" + i.Name.ToString()))  
    End If  
    For Each att As XAttribute In el.Attributes()  
        If att.GetSchemaInfo.Validity <> XmlSchemaValidity.Valid Then  
            Console.WriteLine("Invalid Attribute {0}", _  
                att _  
                .Parent _  
                .AncestorsAndSelf() _  
                .InDocumentOrder() _  
                .Aggregate("", _  
                    Function(ByVal s, ByVal i) s + "/" + i.Name.ToString()) + _  
                    "/@" + att.Name.ToString())  
        End If  
    Next  
    For Each child As XElement In el.Elements()  
        DumpInvalidNodes(child)  
    Next  
End Sub  

Dim errors As Boolean = False  

Private Sub XSDErrors(ByVal o As Object, ByVal e As ValidationEventArgs)  
    Console.WriteLine("{0}", e.Message)  
    errors = True  
End Sub  

Sub Main()  
    Dim xsdMarkup As XDocument = _  
    <?xml version='1.0'?>  
    <xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>  
        <xsd:simpleType name='GCType'>  
            <xsd:restriction base='xsd:token'>  
                <xsd:enumeration value='AAA'/>  
                <xsd:enumeration value='BBB'/>  
            </xsd:restriction>  
        </xsd:simpleType>  
        <xsd:element name='Root'>  
            <xsd:complexType>  
                <xsd:sequence>  
                    <xsd:element name='Child1' minOccurs='1' maxOccurs='1'>  
                        <xsd:complexType>  
                            <xsd:sequence>  
                                <xsd:element name='GrandChild1' type='GCType'/>  
                                <xsd:element name='GrandChild2' type='GCType'/>  
                                <xsd:element name='GrandChild3' type='GCType'/>  
                            </xsd:sequence>  
                        </xsd:complexType>  
                    </xsd:element>  
                </xsd:sequence>  
            </xsd:complexType>  
        </xsd:element>  
    </xsd:schema>  

    Dim schemas As XmlSchemaSet = New XmlSchemaSet()  
    schemas.Add("", xsdMarkup.CreateReader)  

    Dim doc1 As XDocument = _  
    <?xml version='1.0'?>  
    <Root>  
        <Child1>  
            <GrandChild1>AAA</GrandChild1>  
            <GrandChild2>ZZZ</GrandChild2>  
            <GrandChild3>ZZZ</GrandChild3>  
        </Child1>  
    </Root>  

    Console.WriteLine("Validating doc1 ...")  
    errors = False  
    doc1.Validate(schemas, AddressOf XSDErrors, True)  
    Console.WriteLine("doc1 {0}", IIf(errors, "did not validate", "validated"))  
    DumpInvalidNodes(doc1.Root)  
End Sub  

この例を実行すると、次の出力が生成されます。This example produces the following output:

Validating doc1 ...  
The 'GrandChild2' element is invalid - The value 'ZZZ' is invalid according to its datatype 'GCType' - The Enumeration constraint failed.  
The 'GrandChild3' element is invalid - The value 'ZZZ' is invalid according to its datatype 'GCType' - The Enumeration constraint failed.  
doc1 did not validate  
Invalid Element /Root  
Invalid Element /Root/Child1  
Invalid Element /Root/Child1/GrandChild2  
Invalid Element /Root/Child1/GrandChild3  

注釈

使用することができます、IXmlSchemaInfo検証済み要素の特定の特性を判断するには、このメソッドによって返されます。You can use the IXmlSchemaInfo returned by this method to determine certain characteristics of a validated element. たとえば、要素の動的なスキーマ型を指定できます。For example, you can determine the dynamic schema type of the element.

使用する、SchemaElement部分検証型を取得するプロパティ (XmlSchemaElement)。You use the SchemaElement property to get a partial validation type (XmlSchemaElement). ドキュメント全体を検証せず、サブツリーのルート要素を使用してを再検証するのにには、これを使用できます。You can use it to revalidate a sub-tree with an element at its root without validating an entire document.

このプロパティの例は、次を参照してください。Validateします。For an example of this property, see Validate.

適用対象