2017-07-08 21 views
0

XSDのkeyref検証に問題があり、簡単に実行する必要があります。ここで は私のXMLです:XSD妥当性チェックのkeyref値が見つかりません

<Configuration> 
    <Dependencies> 
     <Dependency name="python"></Dependency> 
    </Dependencies> 
    <Plugins> 
     <Plugin> 
      <Dependencies> 
       <Dependency name="python"></Dependency> 
      </Dependencies> 
     </Plugin> 
    </Plugins> 
</Configuration> 

そして今、私のスキーマ(構成要素で下さいないkey.keyrefペア):

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Configuration"> 
     <xs:complexType> 
      <xs:sequence minOccurs="1" maxOccurs="1"> 
       <xs:element name="Dependencies" type="DependenciesType"></xs:element> 
       <xs:element name="Plugins"> 
        <xs:complexType> 
         <xs:sequence minOccurs="1" maxOccurs="unbounded"> 
          <xs:element name="Plugin" type="PluginType" minOccurs="1" maxOccurs="unbounded"></xs:element> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 

     <xs:key name="kDependency"> 
      <xs:selector xpath="./Dependencies/Dependency"></xs:selector> 
      <xs:field xpath="@name"></xs:field> 
     </xs:key> 
     <xs:keyref name="krPluginDependency" refer="kDependency"> 
      <xs:selector xpath="./Plugins/Plugin/Dependencies/Dependency"></xs:selector> 
      <xs:field xpath="@name"></xs:field> 
     </xs:keyref> 

    </xs:element> 

    <!-- Now the Dependencies types --> 

    <xs:complexType name="DependenciesType"> 
     <xs:sequence> 
      <xs:element minOccurs="1" maxOccurs="unbounded" name="Dependency" type="DependencyType"></xs:element> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="DependencyType"> 
     <xs:attribute name="name" type="xs:string" use="required"/> 
    </xs:complexType> 

    <!-- And the plugin type --> 

    <xs:complexType name="PluginType"> 
     <xs:sequence> 
      <xs:element name="Dependencies" minOccurs="1" maxOccurs="1"> 
       <xs:complexType> 
        <xs:sequence minOccurs="1" maxOccurs="1"> 
         <xs:element name="Dependency" minOccurs="1" maxOccurs="unbounded"> 
          <xs:complexType> 
           <xs:attribute name="name"></xs:attribute> 
          </xs:complexType> 
         </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 

</xs:schema> 

プラグインの依存関係名は、設定を参照するために持っている名前を依存関係。私はここでチュートリアルに従い、私がばかでないかどうかを確認しました(http://zvon.org/xxl/XMLSchemaTutorial/Output/ser_keys_st5.html)。私は自分のXPath式をチェックして、彼らは良いです(https://www.freeformatter.com/xpath-tester.html)。

私は私のXMLファイルを検証しよう:値「のpython」と

キー「krPluginDependencyが」要素「構成」のアイデンティティ制約が見つかりません。

どこが問題かわかりません。

+0

問題を再現しようとしましたが、XMLファイルでoXygen 19のスキーマが正常に検証されました。エラーが発生したときに使用したツール/パーサーの詳細を追加したい場合があります。 –

+0

私はこれ(https://www.freeformatter.com/xml-validator-xsd.html)やこれ(http://www.utilities-online.info/xsdvalidation/)のようなオンラインのバリデータを使用しましたが、いくつかのオンラインツールはJAXBエンジンによって動力を与えられていますが、実際にはいくつかの主要な例がサポートされていません。私はPythonでlxmlを試してみます。 – CloudCompany

答えて

0

さて、それは本当にばかげたエラーでした。 nameタイプには、タイプが必要です。nameタイプでは、nameタイプが必要です。私の場合、それはtype="xs:string"であり、正常に動作します。

関連する問題