Tabellenspalten xml/xsl und checkbox filtern
NewHtmlUser
- xml
Hallo,
in meiner XML-Datei stehen Infos drin.
Mit einer XSL-Datei filtere ich diese Infos und zeige diese in einer Tabelle an. Jetzt möchte ich aber über eine CheckBox-Auswahl und nach einem Klick auf einen Button bestimmen, welche Spalten dargestellt werden oder nicht.
XML-Datei "test.xml":
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="test.xsl" type="text/xsl" ?>
<LogDataInfo>
<LogData>
<General counter="0" timStamp="1089616" cBitSts="00" BatStat="2" baroHgt="0.00"/>
</LogData>
</LogDataInfo>
XML-Datei "test.xsl":
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Logdaten Report</title>
</head>
<body>
<h3>
<u><a name="refZurueck">
Logdaten Report</a>
</u>
</h3>
<style type="text/css">
a:hover { text-decoration:none; font-weight:bold; background-color:#CCFFFF; }
</style>
<!-- Check-Boxen -->
<font size="4">
<strong>Auswahl</strong>
</font>
<table border="0">
<tr>
<td>Allgemein</td>
<td>
<input type="checkbox" name="Allgemein" checked="true" value="number">Nr</input><br/>
<input type="checkbox" name="Allgemein" checked="False" value="timStamp">timeStamp</input><br/>
<input type="checkbox" name="Allgemein" checked="False" value="cBitSts">BitStatus</input><br/>
<input type="checkbox" name="Allgemein" checked="False" value="BatStat">BatStatus</input><br/>
<input type="checkbox" name="Allgemein" checked="False" value="baroHeight">baroHöhe</input><br/>
</td>
</tr>
</table>
<form action="button.htm">
<div> <!-- Jetzt soll er die Seite aufbauen und nur die checked-TRUE-Buttons im HTML-Format darstellen -->
<button name="ClickMich" type="button" onclick="history.go()"/>
</div>
xsl:apply-templates/
</form>
</body>
</html>
</xsl:template>
<!--Knotenpunkt LogData-->
<xsl:template match="LogDataInfo">
<table border="1" rules="all">
<tr bgcolor="#CCFFFF" align="center" valign="top">
<th colspan="5" align="center">Allgemein</th>
</tr>
<tr bgcolor="#CCFFFF" align="center" valign="top">
<th id="number">#</th>
<th id="timStamp">Zeitstempel [sec]</th>
<th id="cBitSts">Bit-Status</th>
<th id="BatStat">Batterie-Status</th>
<th id="baroHeight">baro. Höhe [m]</th>
</tr>
<xsl:for-each select="LogData">
<tr align="center">
<td headers="number"><xsl:value-of select="General/@counter"/></td>
<td headers="timStamp"><xsl:value-of select="General/@timStamp"/></td>
<td headers="cBitSts"><xsl:value-of select="General/@cBitSts"/></td>
<td headers="BatStat"><xsl:value-of select="General/@BatStat"/></td>
<td headers="baroHeight"><xsl:value-of select="General/@baroHgt"/></td>
</tr>
</xsl:for-each>
</table>
<p><a href="#refZurueck">Zurück</a></p>
<p> </p>
</xsl:template>
</xsl:stylesheet>
Hallo,
in meiner XML-Datei stehen Infos drin.
Mit einer XSL-Datei filtere ich diese Infos und zeige diese in einer Tabelle an. Jetzt möchte ich aber über eine CheckBox-Auswahl und nach einem Klick auf einen Button bestimmen, welche Spalten dargestellt werden oder nicht.
Machst du die Tranformation am Server(1) oder macht sie der Browser(2) direkt?
1: du kannst dein Formular absenden, (wenn du es erstmal richtig zusammengebaut hast (also inputs _innerhalb_ des Forms)) und dann die Werte der Checkboxen als URL-Partamter an deinem XSL übergeben (das soll dein Script machen, der die Transfotmation aufruft). In deinem XSLT natürlich die Abfrage für die Parameter einbauen, damit dann wirklich der gewünschte Teil erzeugt wird.
2: du setzt auf JavaScript und XMLHTTPRequest (also auf AJAX).
Da hasat du auch zwei Möglichkeiten:
a) die qauasi statische: die Transformation wird von deinem JavaScript ausgeführt wie hier: http://forum.de.selfhtml.org/archiv/2006/3/t126420/#m815491 oder wie im diesem http://forum.de.selfhtml.org/archiv/2006/1/t121401/ gezeigt.
oder b) du holst die gewünschte Daten immer wieder vom Server, nur dazu brauchst du eigentich kein XSL, dafür viel JavaScript um die Daten dann ins HTML zu "gießen" und auf dem Bildschirm darzustellen.
Grüße
Thomas