1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" indent="yes"/>
<xsl:param name="field"/>
<xsl:param name="order"/>
<xsl:template match="persons">
<html>
<head>
<script type="text/javascript">
function tri(field,order) {
var xslt = new ActiveXObject("Msxml2.XSLTemplate.4.0");
var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0");
var xslProc;
xslDoc.async = false;
xslDoc.load("tridyna.xsl");
xslt.stylesheet = xslDoc;
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
xmlDoc.async = false;
xmlDoc.load("test.xml");
xslProc = xslt.createProcessor();
xslProc.input = xmlDoc;
xslProc.addParameter("field", field);
xslProc.addParameter("order", order);
xslProc.transform();
document.body.innerHTML=xslProc.output;
}
</script>
</head>
<body>
<script type="text/javascript">
tri('name', 'ascending');
</script>
<table>
<xsl:variable name="neworder">
<xsl:if test="$order='ascending'">descending</xsl:if>
<xsl:if test="$order='descending'">ascending</xsl:if>
</xsl:variable>
<tr>
<th>
<a href="javascript:tri('name','{$neworder}')">name</a>
</th>
<th>
<a href="javascript:tri('phone','{$neworder}')">phone number</a>
</th>
</tr>
<xsl:for-each select="person">
<xsl:sort select="*[name()=$field]" order="{$order}"/>
<tr>
<td>
<xsl:value-of select="name"/>
</td>
<td>
<xsl:value-of select="phone"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |