Erro de compilação JSP ao alterar o analisador XML para Xerces
Pergunta
Tudo, estou trabalhando em um Java WebApp que implantamos no servidor de aplicativos da Web Resin. Eu tenho feito alguns XML analisando uma nova parte do aplicativo e percebi que nosso aplicativo estava usando Aulas de resina Para fazer a análise. Eu queria me afastar disso e usar algo mais padrão por vários motivos, então defino essas propriedades do sistema no meu arquivo de configuração de resina (e adicionei o jar Xerces ao meu caminho de classe):
<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
E agora estou recebendo erros de compilação JSP em várias páginas (acho que a resina embutida no analisador era mais branda). O erro diz:
org.xml.sax.SAXParseException: The value of attribute "title" associated with an element type "display:column" must not contain the '<' character.
E a tag 'Display: Column' em algumas páginas realmente contém marcação no atributo 'título'. Aqui está um exemplo:
<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> " >
Esse é um código JSP feio, eu sei, mas também é um código que já está em produção, por isso hesito em alterá -lo.
Alguém sabe de uma maneira que eu posso definir Xerces para que ele permita que o JSP seja compilado como está?
Solução
Esse é certamente o código JSP feio.
Se você estiver usando um analisador XML, você tem um problema. Os valores de atributo no XML válido não podem conter o caractere '<', pois o Xerces está lhe dizendo.
É duvidoso que você possa dizer a Xerces para aceitar isso, mas consertar o XML seria uma idéia melhor do que falar um analisador XML para aceitar o XML incorreto de qualquer maneira.
Você provavelmente deseja voltar ao uso das classes de resina até que você possa alimentar o XML XML adequado ou configurar a resina para não usar um analisador XML como parte de sua compilação JSP - consulte os comentários.