0

XSL-FO(org.apache.fop.apps.Driver)を使用してXMLファイルからPDFプリントアウトを生成するプログラムがあります。

私はスタイルシート(xsl)に取り組んでおり、デバッグを簡単にしようとしています。XMLとXSLファイルがありますが、XSLファイルで作業しているときに、生成されたPDFをエディターに表示させたいだけです。

私はいくつかのエディタを試しましたが、プログラムに問題がないように見えるエラーが表示されました。

問題は、編集者が次のことを期待していることのようです。

<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value="" />

プログラムが生成する実際のXMLは

<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value />

ご覧のとおり、空のattr_valueには明らかに= ""がありません。エディターの厳密さを下げる方法はありますか?それで、私が持っているプログラムと同じようにPDFを生成できますか?

4

3 に答える 3

1

attr_valueとno=を含むXMLは無効なW3CXML仕様であるため、すべてのXMLツールが文句を言う必要があります。どのツールを使用していますか?

于 2009-09-10T10:57:52.620 に答える
1
<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value />

前述のように、その行は無効です。大丈夫だと考えるプログラムは、おそらく、これらの無効な属性を無視する独自のカスタムXMLパーサーを使用しています。そのプログラムを作成した人々のプログラミングの質に疑問を抱かせます。彼らは、XML-DOMメカニズムではなく、このXMLをテキストとして記述しているように思えます。それでも、それは問題ないはずですが、残念ながら、彼らのコードにはバグがあります。

すべてではないにしても、ほとんどのXMLエディター、パーサー、およびトランスフォーマーは、XMLが処理される前にXMLを検証します。したがって、残念ながら、XSLTファイル内からこの問題を修正するための適切な解決策はありません。RegExを使用すると、無効な属性を削除したり、= ""を追加して有効にすることができますが、XSLTがXMLを検証する前にこれを行う方法はありません。

これを解決するには、プログラムを変更して有効なXMLを生成する必要があります。今のところ、これは非常に深刻なバグと見なされる可能性があるためです。(プログラムがこの偽のXMLを内部目的で使用する場合を除きます。)

于 2009-09-10T11:34:08.617 に答える
0

さて、正規表現を使用して、すべての属性名を検索して置換しました。名前が= ""で終わっていない場合は、それを追加します。これで、すべてが問題ないように見えます...ラメですが、私のニーズには問題ありません。一瞬

于 2009-09-10T09:57:57.740 に答える