5

助けてくれてありがとう...

(Ant タスクを介して) DTD に対する検証に失敗している XML ファイルに問題がありますxmlvalidateが、XML ドキュメントで報告されたエラーは、検証されているドキュメントの内容と一致しません。さらに、Oxygen で開かれた同じファイルは問題なく検証されます。

エラーを報告する ant 出力の例は次のとおりです。

[xmlvalidate] /Path/to/file.xml:240:91: Attribute "match_style" with value "ble" must have a value from the list "any all none ".

問題のファイルを目視検査すると、match_style240 行目の属性の値はall. ファイルを検索すると、文字列bleがドキュメント内で数回 (tableタグ内の部分文字列enableとして、また属性名として) 出現しますが、145 行目と 328 行目の間にはまったく表示されません。

XML ファイルを手作業で編集して再検証してみました。報告されたエラーよりも前のファイルから改行またはその他の空白を削除すると (場合によっては改行を追加すると)、(他の変更を行わない) 場合によっては完全に修正され、ファイルが検証されます。それ以外の場合は、まだ失敗しますが、エラーはファイルのさらに下にあり、新しいエラーに近い空白をさらに編集すると、問題が修正されるか、「エラー」がさらに下に移動します。そのような編集によって何が修正され、どれが修正されないかについて、韻律や理由を識別することができませんでした。

重要な点を繰り返します。空白を変更し、他の変更を行わないと、ファイルが検証されることがあります。

私は XML ファイルを検索して、奇妙なことをしている可能性のある目に見えない文字や制御文字を探しましたが、本来あるべき場所にあるさまざまな空白以外は見つかりませんでした。

ファイルは、他のさまざまな種類の XML のソース ファイルから XSLT 2.0 変換によって生成されます。変換はJava、Ant ビルドで Saxon を使用してタスクを介して行われます。(私の XSL は場合によっては 1 つのソース ファイルから複数の結果ドキュメントを生成し、最初の結果ドキュメント以外は常にそれらのタスクで省略されているように見えるため、XSLTタスクまたはタスクを希望どおりに機能させることができませんでした。 Saxon) タスクは次のとおりです。

<java classname="net.sf.saxon.Transform" fork="true"
    output="${dest.dir}/build"
    resultproperty="transform_result"
    failonerror="true">
    <arg line="-o ${dest.dir}/ ${source.dir}/xml_sources ${source.dir}/xsl/transform.xsl"/>
</java>

また、XSL とソース XML ファイルで異常な文字を検索し、XSL の文字マップと結果ドキュメントのインデントをいじって、異常な空白文字で奇妙なことが起きていないことを確認しました。文字マップまたはインデントの変更による唯一の違いは、手動で空白を編集する場合と本質的に同じです。「エラー」は時々移動しますが、それでも発生します。

さまざまなバージョンの Saxon とさまざまなバージョンの Ant を使用してみましたが、結果に違いはありませんでした。この問題はしばらく前に発生しました (正確な時期はわかりません) が、昔はすべてが機能していたので、古いバージョンの XSL とソースを使用してみましたが、機能しない古いバージョンのものは見つかりませんでした。 t 問題を表示します (ただし、CVS から SVN への切り替えと、CVS が存在しないため、古いリビジョンの一部が失われているため、十分に戻ることができない場合があります)。

ファイルが検証する必要がある DTD は私のものではありません。変更したり、スキーマに切り替えたりすることはできません。

私は通常、Mac (現在 10.7.5 を実行中) で作業していますが、問題は Linux でも発生します (どのバージョンかはわかりません)。私が実際に扱うことができなかった 1 つの変数は、Java です。前回正常に動作していたときは Java 1.5 を実行していた可能性があります。利用可能なマシンで 1.5 に戻すことはできません。

関連する可能性があると私が考えることができるすべての情報です。

私はこの問題で頭がいっぱいです。私のすべての調査において、他の誰かが同じ問題を報告しているのを聞いたことがありません。何が間違っている可能性があるかについての考えは、非常に高く評価されます。

ありがとう!

4

1 に答える 1