From: Francois-Xavier B. <fra...@ce...> - 2012-10-23 22:08:14
|
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 : > > 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 : > > 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...><nic...@gm...> > *À: *"Frederique Aussel" <fre...@sm...><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"<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 lis...@li...https://lists.sourceforge.net/lists/listinfo/webassembletool-users > > > > |