Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

const xmlString = `
<foo>
<bar>x</bar>
<bar>y</bar>
</foo>
`;
const xsltString = `
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<result>
<xsl:apply-templates select="document('resources/test.xml')//static" />
<xsl:apply-templates select="foo" />
</result>
</xsl:template>
<xsl:template match="static">
<failure />
</xsl:template>
<xsl:template match="foo">
<success />
</xsl:template>
</xsl:stylesheet>
`;
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "application/xml");
const xsltDoc = parser.parseFromString(xsltString, "application/xml");
const xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsltDoc);
test(() => {
const resultFrag = xsltProcessor.transformToFragment(xmlDoc, document);
assert_equals(resultFrag.firstChild.localName, "result");
assert_true(Array.prototype.every.call(resultFrag.firstChild.children,
(e) => e.localName == "success"));
}, `xsl:document function disabled in transformToFragment`);
test(() => {
const resultDoc = xsltProcessor.transformToDocument(xmlDoc);
assert_equals(resultDoc.documentElement.localName, "result");
assert_true(Array.prototype.every.call(resultDoc.documentElement.children,
(e) => e.localName == "success"));
}, `xsl:document function disabled in transformToDocument`);