ojp-sdk-legacy
Version:
OJP (Open Journey Planner) Javascript SDK (legacy version)
31 lines (30 loc) • 1.36 kB
JavaScript
export class XML_Helpers {
// from https://stackoverflow.com/a/47317538
static prettyPrintXML(sourceXml) {
var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');
var xsltDoc = new DOMParser().parseFromString([
'<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">',
' <xsl:strip-space elements="*"/>',
' <xsl:template match="para[content-style][not(text())]">',
' <xsl:value-of select="normalize-space(.)"/>',
' </xsl:template>',
' <xsl:template match="node()|@*">',
' <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>',
' </xsl:template>',
' <xsl:output indent="yes"/>',
'</xsl:stylesheet>',
].join("\n"), 'application/xml');
try {
var xsltProcessor = new XSLTProcessor();
// TODO - check what's wrong in Firefox, why this fails
xsltProcessor.importStylesheet(xsltDoc);
var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
var resultXml = new XMLSerializer().serializeToString(resultDoc);
return resultXml;
}
catch (error) {
console.error('XML_Helpers.prettyPrintXML - fails, see TODO');
return sourceXml;
}
}
}