XSLT and JavaScript
Here should go questions about transforming XML with XSLT and FOP.
-
- Posts: 1
- Joined: Tue May 02, 2017 6:00 pm
XSLT and JavaScript
I'm having trouble using JavaScript with XSLT. I have a JavaScript function to parse an XML string into a certain format. This works http://js.do/MHammett/applic-xmlparser Now I would like to incorporate this function into a style sheet to run on XML files. This unfortunetly doesn't work. I'm having trouble outputting the functions results. My script uses document.write, this works in my test case, but not in the style sheet.
Any help you can provide would be greatly appreciated.
XML
XSLT
Any help you can provide would be greatly appreciated.
XML
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<IETM>
<datamodule><file>DMC-GAASIB0-00-00-10-00-00AAA-942B-A.xml</file><applic id="SERIAL_645_PRE"><displayText><simplePara>Test 1 Motorcycle without LED Light Assemblies</simplePara></displayText><evaluate andOr="and"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-50"></assert><evaluate andOr="or"><assert applicPropertyIdent="SERIAL_Z432-645" applicPropertyType="condition" applicPropertyValues="PRE"></assert><assert applicPropertyIdent="SERIAL_Z432-645" applicPropertyType="condition" applicPropertyValues="SP"></assert></evaluate></evaluate></applic></datamodule>
<datamodule><file>DMC-GAASIB0-00-00-10-00-00AAA-942B-A.xml</file><applic id="Test1"><displayText><simplePara>Test 1 Motorcycle</simplePara></displayText><evaluate andOr="or"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-50"></assert><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-52"></assert></evaluate></applic></datamodule>
<datamodule><file>DMC-GAASIB0-00-00-10-00-00AAA-942B-A.xml</file><applic id="SERIAL_720_PRE"><displayText><simplePara>Test 1 Motorcycle without Control Cable</simplePara></displayText><evaluate andOr="and"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-50"></assert><evaluate andOr="or"><assert applicPropertyIdent="SERIAL_Z432-720" applicPropertyType="condition" applicPropertyValues="PRE"></assert><assert applicPropertyIdent="SERIAL_Z432-720" applicPropertyType="condition" applicPropertyValues="SP"></assert></evaluate></evaluate></applic></datamodule>
<datamodule><file>DMC-GAASIB0-00-00-10-00-00AAA-942B-A.xml</file><applic id="SERIAL_639_PRE"><displayText><simplePara>Test 1 Motorcycle without Fuel </simplePara></displayText><evaluate andOr="and"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-50"></assert><evaluate andOr="or"><assert applicPropertyIdent="SERIAL_Z432-639" applicPropertyType="condition" applicPropertyValues="PRE"></assert><assert applicPropertyIdent="SERIAL_Z432-639" applicPropertyType="condition" applicPropertyValues="SP"></assert></evaluate></evaluate></applic></datamodule>
<datamodule><file>DMC-GAASIB0-00-00-10-00-00AAA-942B-A.xml</file><applic id="SERIAL_709_PRE_ALL"><displayText><simplePara>All Motorcycle</simplePara></displayText><evaluate andOr="or"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-55"></assert><evaluate andOr="and"><evaluate andOr="or"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-50"></assert><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-52"></assert></evaluate><evaluate andOr="or"><assert applicPropertyIdent="SERIAL_Z432-709" applicPropertyType="condition" applicPropertyValues="PRE"></assert><assert applicPropertyIdent="SERIAL_Z432-709" applicPropertyType="condition" applicPropertyValues="SP"></assert></evaluate></evaluate></evaluate></applic></datamodule>
<datamodule><file>DMC-GAASIB0-00-00-10-00-00AAA-942B-A.xml</file><applic id="SERIAL_709_PRE_Test_1"><displayText><simplePara>Test 1 Motorcycle without Extended right blinker</simplePara></displayText><evaluate andOr="and"><evaluate andOr="or"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-50"></assert><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-52"></assert></evaluate><evaluate andOr="or"><assert applicPropertyIdent="SERIAL_Z432-709" applicPropertyType="condition" applicPropertyValues="PRE"></assert><assert applicPropertyIdent="SERIAL_Z432-709" applicPropertyType="condition" applicPropertyValues="SP"></assert></evaluate></evaluate></applic></datamodule>
<datamodule><file>DMC-GAASIB0-00-00-10-00-00AAA-942B-A.xml</file><applic id="SERIAL_731_PRE_Test_1"><displayText><simplePara>Test 1 Motorcycle without fuel injection</simplePara></displayText><evaluate andOr="and"><evaluate andOr="or"><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-50"></assert><assert applicPropertyIdent="partno" applicPropertyType="prodattr" applicPropertyValues="NOVA-52"></assert></evaluate><evaluate andOr="or"><assert applicPropertyIdent="SERIAL_Z432-731" applicPropertyType="condition" applicPropertyValues="PRE"></assert><assert applicPropertyIdent="SERIAL_Z432-731" applicPropertyType="condition" applicPropertyValues="SP"></assert></evaluate></evaluate></applic></datamodule>
</IETM>
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:strip-space elements="*"/>
<xsl:template name="applic-script">
<script type="javascript">
function parse(node) {
return Array.from(node.children, child =>
child.tagName === 'assert'
? child.getAttribute('applicPropertyIdent')
+ '="' + child.getAttribute('applicPropertyValues') + '"'
: child.tagName === 'evaluate'
? '(' + parse(child) + ')'
: null
).filter(Boolean).join(' ' + node.getAttribute('andOr') + ' ');
}
var sApplic = "<xsl:value-of select="normalize-space(/IETM/datamodule/applic)"/>";
document.write(sApplic);
const xml = ( new window.DOMParser() ).parseFromString(sApplic, "text/xml");
const result = parse(xml.documentElement);
document.write(result);
</script>
</xsl:template>
<xsl:template match="applic">
<div><xsl:apply-templates></xsl:apply-templates></div>
<xsl:call-template name="applic-script"/>
</xsl:template>
</xsl:stylesheet>
-
- Posts: 9421
- Joined: Fri Jul 09, 2004 5:18 pm
Re: XSLT and JavaScript
Hi,
I'm not sure I understand. Did you assume that from XSLT you can call Javascript code? As far as I know this is not possible.
Usually the XSLT script is applied on the XML document and this results in an HTML document which may contain embedded Javascript content.
Regards,
Radu
I'm not sure I understand. Did you assume that from XSLT you can call Javascript code? As far as I know this is not possible.
Usually the XSLT script is applied on the XML document and this results in an HTML document which may contain embedded Javascript content.
Regards,
Radu
Radu Coravu
<oXygen/> XML Editor
http://www.oxygenxml.com
<oXygen/> XML Editor
http://www.oxygenxml.com
Jump to
- Oxygen XML Editor/Author/Developer
- ↳ Feature Request
- ↳ Common Problems
- ↳ DITA (Editing and Publishing DITA Content)
- ↳ SDK-API, Frameworks - Document Types
- ↳ DocBook
- ↳ TEI
- ↳ XHTML
- ↳ Other Issues
- Oxygen XML Web Author
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Content Fusion
- ↳ Feature Request
- ↳ Common Problems
- Oxygen JSON Editor
- ↳ Feature Request
- ↳ Common Problems
- Oxygen PDF Chemistry
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Feedback
- ↳ Feature Request
- ↳ Common Problems
- Oxygen XML WebHelp
- ↳ Feature Request
- ↳ Common Problems
- XML
- ↳ General XML Questions
- ↳ XSLT and FOP
- ↳ XML Schemas
- ↳ XQuery
- NVDL
- ↳ General NVDL Issues
- ↳ oNVDL Related Issues
- XML Services Market
- ↳ Offer a Service