XMLパーサーは文句を言いませんが、XMLeditorは空の属性について文句を言います
-
05-07-2019 - |
質問
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には =&quot;&quot; が明確に欠けていることがわかります-エディターの厳密さを緩和する方法はありますか?だから、私が持っているプログラムと同じようにPDFを生成できますか?
解決
<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value />
前述のように、その行は無効です。大丈夫だと思うプログラムは、おそらくこれらの無効な属性を無視する独自のカスタムXMLパーサーを使用しています。そのプログラムを作成した人々のプログラミングの質に疑問を抱いています。彼らは、XML-DOMメカニズムを介してこのXMLをテキストとして記述しているように思えます。それでも、それは問題ないはずですが、残念ながら、コードにはバグがあります。
ほとんどではありませんが、XMLエディター、パーサー、トランスフォーマーは、XMLを処理する前に検証します。残念ながら、XSLTファイル内からこの問題を解決する良い解決策はありません。 RegExを使用して、無効な属性を削除するか、=&quot;&quot;を追加して有効にすることができます。 XSLTがXMLを検証する前にこれを行う方法はありません。
これを解決するには、プログラムを変更して有効なXMLを生成する必要があります。現時点では、これは非常に深刻なバグと見なされる可能性があるためです。 (プログラムがこの偽のXMLを内部目的に使用する場合を除きます。)
他のヒント
attr_valueとno =のXMLは無効です W3C XML仕様したがって、すべてのXMLツールがエラーを出すはずです。どのツールを使用していますか?
OK、正規表現検索&amp;を使用しました。 =&quot;&quot;で終わらない場合は、すべての属性名を置き換えます。それを追加して、今ではすべてが大丈夫なようです...ラメですが、現時点では私のニーズには大丈夫です