2012-04-08 12 views
0

XMLについての私の理解はそれほど素晴らしいものではありませんが、アノテーション/ appinfoのコンテンツの理解は、整形式のXMLを許可されていることです。ゆるやかな検証の私の理解は、関連するスキーマ情報が得られれば要素と属性が検証されることです。XMLスキーマアノテーション/ appinfoのXMLコンテンツの検証

私の状況は、このセクションで検証が必要な内容のXMLスキーマがあります。私は、コンテンツを検証するための関連スキーマを持っています。

以下に示すように、完全に単純なXMLスキーマを作成し、appinfo要素を追加しました。 appinfoの内容は別の要素宣言であり、純粋に他のスキーマを参照しないためです。検証しようとしているスキーマは、明らかに異なるものを参照しています。

<?xml version="1.0"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="http://www.demo.org" 
     xmlns="http://www.demo.org" 
     elementFormDefault="qualified"> 
<xsd:annotation> 
    <xsd:appinfo> 
     <xsd:element name="Demo"> 
      <xsd:complexType> 
       <xsd:sequence> 
        <xsd:element name="A" type="xsd:iteger"/> 
        <xsd:element name="B" type="xsd:integer"/> 
       </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element>  
    </xsd:appinfo> 
</xsd:annotation> 
<xsd:element name="Demo"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="A" type="xsd:integer"/> 
      <xsd:element name="B" type="xsd:integer"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

注意APPINFOセクションで、私は、スキーマの本体でこれを行う場合は、素子Aに故意にスペルミス「整数」をしました、その後XmlSchemaSet.Compile()は私にこのスキーマを教えてくれます有効ではありません。

しかし、上記のようにスキーマを使用すると、問題はないことがわかります。私が始めた、より複雑なファイルでは、私は、私もhttp://www.w3.org/2001/XMLSchema.xsdからXMLスキーマをロードし、XmlDocumentに検証するスキーマをロードしXmlDocument.Validate()が、無喜びを実行しようとしましたXmlSchemaSet.Add()

を経由してXmlSchemaSetへの外部スキーマを供給しました。

私はこれに時間を費やして完全に何かを完全に失っているように感じます。任意のポインタが評価!

答えて

0

これはlaxの私の理解ではありません:あなたは宣言

<any 
    namespace=". . . " 
    processContents="lax"> 
</any> 

を持っている場合、XMLの対応する要素が検証されている内容は、で指定された名前空間(S)に対応するスキーマに対して検証されますnamespace(存在する場合) - 使用している可能性のあるスキーマではありません。 appInfoの宣言は、任意のスキーマに対して何の検証が存在しないことを意味namespace="##any"に対応する任意namespace仕様、無し

<xs:element name="appinfo" id="appinfo"> 
    <xs:complexType mixed="true"> 
    <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
     <xs:any processContents="lax"/> 
    </xs:sequence> 
    <xs:attribute name="source" type="xs:anyURI"/> 
    <xs:anyAttribute namespace="##other" processContents="lax"/> 
    </xs:complexType> 
</xs:element> 

あります。