4

XSD 1.1 アサーションに関するこのチュートリアルを読んだところです。

http://www.ibm.com/developerworks/library/x-xml11pt2/

私は彼らの例の 1 つをコピーして、このxsdファイルを作成しました。

<?xml version="1.1"?>                                                               
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">                             
<xs:element name="dimension">                                                    
  <xs:complexType>                                                               
    <xs:attribute name="height" type="xs:int"/>                                  
    <xs:attribute name="width" type="xs:int"/>                                   
    <xs:assert test="@height = @width"/>                                         
  </xs:complexType>                                                              
</xs:element>                                                                    

</xs:schema>                                                                     

次のコマンドを使用して、CodeSynthesis XSD XML スキーマを C++ コンパイラ4.0.0に使用して、これを解析して hxx ファイルをコード生成しようとしています。

/path/to/binary cxx-tree /path/to/file.xsd

しかし、次のエラーが表示されます。

/path/to/file.xsd:7:41: エラー: 複合型定義の要素 'assert' が無効です

xml バージョンを に変更すると、同じエラーが発生し1.0ます。私が理解しているように、この場合、xml のバージョンは重要ではありませんが、間違っている可能性があります。

このエラー メッセージの原因は何ですか?どうすれば修正できますか?

4

1 に答える 1

4

XSD はアサーションを適切に使用しています。(これはXSD バージョンではなくXMLバージョンであるため、おそらくversion="1.0"XML 宣言が必要ですが、それはエラーの原因ではありません。)

XSD プロセッサが XSD を拒否している場合、XSD プロセッサは XSD 1.1 をサポートしていません。

更新: 実際、CodeSynthesis の Web サイトによると、CodeSynthesis XSD 4.0.0 は Xerces-C++ に基づいており、XSD 1.1 をサポートしていません。CodeSynthesis は、製品ページでこれを明示する必要があります。

于 2015-06-23T23:35:38.950 に答える