Derek Tinney
Usenet Archive
- Joined
- Oct 30, 2004
- Messages
- 1
- Reaction score
- 0
Hi,
I'm having difficulty building an XLST file that allows me to sort a list of log records. I put together an XSL file that allows me to output a copy of the input file and then I attempted to sort it. Eventually I want to filter it based on the "when" element (and/or others) but I cannot proceed until I get the sort to work. I have tried several approaches (specific XPATHs, data-type on the sort) none of which have worked (or have produced unsorted output, and this is the one I feel is simplest and most logical. What am I doing wrong?
Any assistance appreciated.
..js driver
var xmlRetDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlRetDoc.async = false
xmlRetDoc.load("newinput.xml")
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM");
xsl.async = false;
xsl.load("XSL Log Report.xsl");
// Transform
var newxml = new ActiveXObject("Microsoft.XMLDOM");
newxml.loadXML(xmlRetDoc.transformNode(xsl));
newxml.save("newxml.xml");
Input file:
<?xml version="1.0" encoding="UTF-16"?>
<ATfES>
<log type="I" level="4000"
id="000000000001-5b96fa11-efd2-4cf0-86cb-dab84186fac6"> <when>2004-10-29T15:21:18</when> <user>VIC\ATSystem</user> </log> <log type="I" level="4000" id="000000000002-46be7d71-800f-49e2-ab0f-ed14a35e197c"> <when>2004-10-29T15:21:17</when> <user>VIC\ATSystem</user> </log> <log type="I" level="4000" id="000000000003-86a927bf-b06f-42cc-8f3b-7f76231271d5"> <when>2004-10-29T15:21:15</when> <user>VIC\ATSystem</user> </log> <log type="I" level="3000" id="000000000004-bbec8881-f09f-442a-8d98-d2f04f02c695"> <when>2004-10-29T15:21:20</when> <user>VIC\ATSystem</user> </log> <log type="I" level="3000" id="000000000005-f83ba729-29a2-4dd3-b97c-25919d926d59"> <when>2004-10-29T15:21:19</when> <user>VIC\ATSystem</user> </log> </ATfES>
XSL File 1 - this one successfully copies the input file to a new output file <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl
utput method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
XSL File 2 - creates no output - added select on "log", sort on "when" and template for "log" <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl
utput method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="log">
<xsl:sort select="when"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="log">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
I'm having difficulty building an XLST file that allows me to sort a list of log records. I put together an XSL file that allows me to output a copy of the input file and then I attempted to sort it. Eventually I want to filter it based on the "when" element (and/or others) but I cannot proceed until I get the sort to work. I have tried several approaches (specific XPATHs, data-type on the sort) none of which have worked (or have produced unsorted output, and this is the one I feel is simplest and most logical. What am I doing wrong?
Any assistance appreciated.
..js driver
var xmlRetDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlRetDoc.async = false
xmlRetDoc.load("newinput.xml")
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM");
xsl.async = false;
xsl.load("XSL Log Report.xsl");
// Transform
var newxml = new ActiveXObject("Microsoft.XMLDOM");
newxml.loadXML(xmlRetDoc.transformNode(xsl));
newxml.save("newxml.xml");
Input file:
<?xml version="1.0" encoding="UTF-16"?>
<ATfES>
<log type="I" level="4000"
id="000000000001-5b96fa11-efd2-4cf0-86cb-dab84186fac6"> <when>2004-10-29T15:21:18</when> <user>VIC\ATSystem</user> </log> <log type="I" level="4000" id="000000000002-46be7d71-800f-49e2-ab0f-ed14a35e197c"> <when>2004-10-29T15:21:17</when> <user>VIC\ATSystem</user> </log> <log type="I" level="4000" id="000000000003-86a927bf-b06f-42cc-8f3b-7f76231271d5"> <when>2004-10-29T15:21:15</when> <user>VIC\ATSystem</user> </log> <log type="I" level="3000" id="000000000004-bbec8881-f09f-442a-8d98-d2f04f02c695"> <when>2004-10-29T15:21:20</when> <user>VIC\ATSystem</user> </log> <log type="I" level="3000" id="000000000005-f83ba729-29a2-4dd3-b97c-25919d926d59"> <when>2004-10-29T15:21:19</when> <user>VIC\ATSystem</user> </log> </ATfES>
XSL File 1 - this one successfully copies the input file to a new output file <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
XSL File 2 - creates no output - added select on "log", sort on "when" and template for "log" <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl
<xsl:template match="/">
<xsl:apply-templates select="log">
<xsl:sort select="when"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="log">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>