XMLパーサーをXercesに変更すると、JSPコンパイルエラー
質問
すべて、私は樹脂Webアプリサーバーに展開するJava WebAppに取り組んでいます。私はアプリケーションの新しい部分のためにいくつかのXML解析を行ってきました、そして、私たちのアプリが使用していることに気付きました 樹脂クラス 解析するために。私はそれから逃げて、いくつかの理由でより標準的なものを使用したかったので、これらのシステムプロパティを樹脂構成ファイルに設定しました(そして、Xerces JARをクラスパスに追加しました):
<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
そして、今、私はいくつかのページでJSPコンピレーションエラーを取得しています(樹脂が組み込まれているパーサーはより寛容だったと思います)。エラーは次のとおりです。
org.xml.sax.SAXParseException: The value of attribute "title" associated with an element type "display:column" must not contain the '<' character.
また、一部のページの「ディスプレイ:列」タグには、実際に「タイトル」属性にマークアップが含まれています。これが例です:
<display:column scope='col' class=" appealColorBG selectAllWidth"
title="<span class='centerThis'><label for='selectAll'>Select All</label><br />
<input type='checkbox' name='selectAll'
id='selectAll'
onClick='selectAllCheckboxes();'/></span> " >
それは醜いJSPコードですが、それはすでに生産されているコードでもあるので、私はそれを変更することをためらいます。
JSPがAsのようにコンパイルできるようにXercesを設定できる方法を誰もが知っていますか?
解決
それは確かに醜いJSPコードです。
XMLパーサーを使用している場合、問題があります。有効なXMLの属性値は、Xercesがあなたに伝えているため、「<」文字を含めることはできません。
Xercesにこれを受け入れるように伝えることができるのは疑わしいですが、XMLを修正する方が、XMLパーサーに誤ったXMLを受け入れるように話すよりも良いアイデアです。
おそらく、適切なXMLをフィードするか、JSPコンパイルの一部としてXMLパーサーを使用しないように樹脂を設定することができるまで、樹脂クラスの使用に戻りたいと思うでしょう - コメントを参照してください。