خطأ في تجميع JSP عند تغيير محلل XML إلى xerces
سؤال
كل شيء ، أنا أعمل على موقع Java WebApp الذي نشره في خادم تطبيق Resin Web. لقد قمت ببعض التحليل XML لجزء جديد من التطبيق ، وأدركت أن تطبيقنا كان يستخدم فصول الراتنج للقيام بالتحليل. أردت الابتعاد عن ذلك واستخدم شيء أكثر قياسية لعدد من الأسباب ، لذلك قمت بتعيين خصائص النظام هذه في ملف تكوين الراتنج الخاص بي (وأضفت جرة Xerces إلى ClassPath):
<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
والآن أحصل على أخطاء في تجميع JSP في عدة صفحات (أعتقد أن Resin's Bruim في محلل كان أكثر تساهلاً). يقول الخطأ:
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 القبيح ، وأنا أعلم ، لكنه أيضًا رمز قيد الإنتاج بالفعل ، لذلك أنا متردد في تغييره.
هل يعرف أي شخص طريقة يمكنني من خلالها ضبط xerces بحيث يسمح لـ JSP بالتجميع كما هو؟
المحلول
هذا بالتأكيد رمز JSP القبيح.
إذا كنت تستخدم محلل XML عليه ، فلديك مشكلة. لا يمكن أن تحتوي قيم السمات في XML الصالحة على الحرف ، كما تخبرك XerCes.
من المشكوك فيه أن تخبر Xerces بقبول هذا ، لكن إصلاح XML سيكون فكرة أفضل من التحدث عن محلل XML لقبول XML غير الصحيح على أي حال.
ربما ترغب في التراجع إلى استخدام فئات الراتنج حتى تتمكن من تغذية XML السليم ، أو تكوين الراتنج لعدم استخدام محلل XML كجزء من مجموعة JSP الخاصة به - راجع التعليقات.