From: Frederique A. <fre...@sm...> - 2012-10-24 11:48:19
|
Bonjour, Pour reproduire l'erreur, il suffit d'ajouter xml:lang="fr" dans le tag <HTML> : < html xmlns =" http://www.w3.org/1999/xhtml " xml:lang =" fr "> Puis faire un appel xpath à l'aide de esi:include. ESIGate arrive à parser une page ayant des erreurs w3c mineurs (je n'ai pas fait de tests poussés) . Je ne pourrait pas fournir de patch avant le 5/11 car je suis en vacances. Cdt, Aussel Frédérique Smile ----- Mail original ----- De: "Francois-Xavier Bonnet" <fra...@ce...> À: "nicolas richeton" <nic...@gm...> Cc: "frederique aussel" <fre...@sm...>, web...@li... Envoyé: Mercredi 24 Octobre 2012 00:07:51 Objet: Re: [EsiGate-users] Bug sur utilisation esi xpath En principe nu html parser supporte le code malformé et par rapport à d'autres comme htmlparser ou jsoup, je l'avais choisi pour ses performances, le fait qu'il était dispo et mis à jour régulièrement dans le repo central maven et sa capacité à travailler en mode sax plutôt que dom contrairement à la plupart des autres parsers. FX Le 23 octobre 2012 17:37, < nic...@gm... > a écrit : Et sinon, si tu peux donner un test unitaire ou exemple (histoire qu'on ne passe pas 15h à essayer de reproduire :-) ) dans un ticket Mantis, je peux essayer de regarder ma solution avec surcharge de validator.nu . Il y a le patch à faire mais plus généralement à voir comment ESIGate se comporte sur du code malformé et si on ne devrait pas utiliser une lib de clean-up HTML avant de parser. Nicolas Le 23 oct. 2012 à 12:23, François-Xavier Bonnet < fra...@ce... > a écrit : <blockquote> Bonjour, Si tu peux soumettre un patch par rapport à la 3.4, on peut imaginer faire une release 3.4.1 Je me chargerai de reporter le patch dans le trunk pour la version 4. Dans ce cas attache ton patch à un ticket Mantis. Le 22/10/2012 15:36, fre...@sm... a écrit : <blockquote> Bonjour, On utilise la version 3.4 car la 4.0 n'est pas encore validé. Est ce que ce sera corrigé dans la 3.4 ? Aussel Frédérique Smile De: "Nicolas Richeton" <nic...@gm...> À: "Frederique Aussel" <fre...@sm...> Cc: web...@li... Envoyé: Samedi 20 Octobre 2012 23:06:59 Objet: Re: [EsiGate-users] Bug sur utilisation esi xpath Bonjour Frédérique, De mon coté, je tenterai de surcharger HtmldocumentBuilder / DomTreeBuilder pour injecter le namespace 'xml' qui devrait être présent selon les specs xhtml. Plus intrusif dans validator.nu , mais devrait éviter tout effet de bord. On peut aussi combiner avec alter_infoset pour éviter de planter en cas de document invalide. Il faut ouvrir un ticket dans mantis :-) Nicolas Le 19 oct. 2012 à 14:15, Frederique Aussel a écrit : > 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 > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct_______________________________________________ > Webassembletool-users mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webassembletool-users ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Webassembletool-users mailing list Web...@li... https://lists.sourceforge.net/lists/listinfo/webassembletool-users </blockquote> </blockquote> |