From: Frederique A. <fre...@sm...> - 2012-10-19 12:32:08
|
Bonjour, Lorsqu'on utilise esi:include : < esi:include src="$PROVIDER({ aggregated2 })/block.jsp" xpath="//html:div[@id='xpathfragment']" /> Si la page cible contient dans son tag HTML : xml:lang="fr" , ESIGate n'arrive pas à parser le document : org.w3c.dom.DOMException : NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces. at nu.validator.htmlparser.impl.TreeBuilder.fatal( TreeBuilder.java:430 ) at nu.validator.htmlparser.dom.DOMTreeBuilder.createHtmlElementSetAsRoot( DOMTreeBuilder.java:185 ) at nu.validator.htmlparser.dom.DOMTreeBuilder.createHtmlElementSetAsRoot( DOMTreeBuilder.java:44 ) at nu.validator.htmlparser.impl.TreeBuilder.appendHtmlElementToDocumentAndPush( TreeBuilder.java:4480 ) at nu.validator.htmlparser.impl.TreeBuilder.startTag( TreeBuilder.java:2534 ) at nu.validator.htmlparser.impl.Tokenizer.emitCurrentTagToken( Tokenizer.java:1311 ) at nu.validator.htmlparser.impl.Tokenizer.stateLoop( Tokenizer.java:2152 ) at nu.validator.htmlparser.impl.Tokenizer.tokenizeBuffer( Tokenizer.java:1522 ) at nu.validator.htmlparser.io.Driver.runStates( Driver.java:301 ) at nu.validator.htmlparser.io.Driver.tokenize( Driver.java:217 ) at nu.validator.htmlparser.dom.HtmlDocumentBuilder.tokenize( HtmlDocumentBuilder.java:405 ) at nu.validator.htmlparser.dom.HtmlDocumentBuilder.parse( HtmlDocumentBuilder.java:204 ) at org.esigate.xml.XpathRenderer.render( XpathRenderer.java:69 ) at org.esigate.Driver.render( Driver.java:300 ) at org.esigate.Driver.render( Driver.java:254 ) at org.esigate.esi.IncludeElement.processPage( IncludeElement.java:222 ) at org.esigate.esi.IncludeElement.parseTag( IncludeElement.java:100 ) at org.esigate.esi.BaseElement.onTagStart( BaseElement.java:28 ) at org.esigate.parser.ParserContextImpl.startElement( ParserContextImpl.java:58 ) at org.esigate.parser.Parser.parse( Parser.java:66 ) at org.esigate.esi.EsiRenderer.render( EsiRenderer.java:39 ) at org.esigate.Driver.proxy( Driver.java:358 ) at org.esigate.servlet.AggregatorServlet.service( AggregatorServlet.java:37 ) at javax.servlet.http.HttpServlet.service( HttpServlet.java:717 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:290 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:206 ) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:233 ) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:191 ) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127 ) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:102 ) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:109 ) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:293 ) at org.apache.coyote.http11.Http11Processor.process( Http11Processor.java:859 ) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:602 ) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:489 ) at java.lang.Thread.run( Thread.java:662 ) Caused by: org.w3c.dom.DOMException : NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces. at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.checkDOMNSErr( CoreDocumentImpl.java:2535 ) at com.sun.org.apache.xerces.internal.dom.AttrNSImpl.setName( AttrNSImpl.java:113 ) at com.sun.org.apache.xerces.internal.dom.AttrNSImpl.<init>( AttrNSImpl.java:74 ) at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createAttributeNS( CoreDocumentImpl.java:2138 ) at com.sun.org.apache.xerces.internal.dom.ElementImpl.setAttributeNS( ElementImpl.java:656 ) at nu.validator.htmlparser.dom.DOMTreeBuilder.createHtmlElementSetAsRoot( DOMTreeBuilder.java:179 ) ... 34 more Est ce que la modification suivante est envisageable dans la classe XpathRenderer : HtmlDocumentBuilder htmlDocumentBuilder = new HtmlDocumentBuilder(XmlViolationPolicy. ALLOW ); htmlDocumentBuilder.setNamePolicy(XmlViolationPolicy.ALTER_INFOSET); Les corrections proposées ont pour effet de transformer les attributs non reconnus dans le DOM, avec par exemple pour xml:lang : <html lang="fr" xmlU0003A0lang="fr" xmlns="http://www.w3.org/1999/xhtml"> Cette correction pourrait induire un effet de bord pour les syntaxes HTML5. Est ce que vous avez une meilleur solution ? Cdt, Aussel Frédérique Smile |