Ik wil een brokje html omzetten in een stuk xml met behulp van xsl en javascript.
Nu kan ik voor Fx, Moz en Opera (9) gewoon de boel als xhtml serveren, met een httprequest een stylesheet inlezen en met een XSLTProcessor de boel omzetten geen enkel probleem.
Nu IE
IE kan een XML document wel omzetten via het transformNode() method, maar dan moet je natuurlijk wel een XML DOM document hebben
Nu kan ik best xhtml syntax serveren, maar dat moet natuurlijk als html (anders wordt heel m'n pagina sowieso al niet getoond): resultaat een HTML DOM. Deze dom bevat de method dus niet en ik kan ook niet zomaar die stukje HTML DOM appenden aan een nieuw XML Document.
Volgende idee was de outerHTML van m'n stukje html uitlezen en dat via de loadXML() method van IE weer inladen alsof het XML was. Probleem is dat de outerHTML uppercase nodes oplevert (en m'n xsl is gebaseerd op lowercase) en bovendien dat de attributen waar dat toegestaan is (in html) geen quotes hebben. Malformed xml syntax dus, dus dat gaat fout.
Nu kan ik wel een enorm arsenaal aan regexen opentrekken om die HTML code op te gaan schonen, maar ik vraag me dus af of er geen betere ideeen zijn.
Nu kan ik voor Fx, Moz en Opera (9) gewoon de boel als xhtml serveren, met een httprequest een stylesheet inlezen en met een XSLTProcessor de boel omzetten geen enkel probleem.
Java:
1
2
3
4
5
6
7
8
9
| xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", "some.xsl", false); xmlhttp.send(null); var xslDoc = xmlhttp.responseXML; var xsl = new XSLTProcessor(); xsl.importStylesheet(xslDoc); var G = xsl.transformToFragment(obj, document); |
Nu IE
IE kan een XML document wel omzetten via het transformNode() method, maar dan moet je natuurlijk wel een XML DOM document hebben
Java:
1
| XMLDOMObject.transformNode(xslDoc) |
Nu kan ik best xhtml syntax serveren, maar dat moet natuurlijk als html (anders wordt heel m'n pagina sowieso al niet getoond): resultaat een HTML DOM. Deze dom bevat de method dus niet en ik kan ook niet zomaar die stukje HTML DOM appenden aan een nieuw XML Document.
Volgende idee was de outerHTML van m'n stukje html uitlezen en dat via de loadXML() method van IE weer inladen alsof het XML was. Probleem is dat de outerHTML uppercase nodes oplevert (en m'n xsl is gebaseerd op lowercase) en bovendien dat de attributen waar dat toegestaan is (in html) geen quotes hebben. Malformed xml syntax dus, dus dat gaat fout.
Nu kan ik wel een enorm arsenaal aan regexen opentrekken om die HTML code op te gaan schonen, maar ik vraag me dus af of er geen betere ideeen zijn.