Hallo,
ich bin gerade dabei mich in die XML/XSLT-Thematik einzuarbeiten und stoße da an ein Verständnis/Umsetzungs-Problem.
Meine XML-Datei ist so aufgebaut und soll per XSLT als HTML ausgegeben werden:
<?xml version="1.0" encoding="iso-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="style.xsl" version="1.0"?>
<Root>
<Section Name="Sec1">
<SectionTitle>Xyz</SectionTitle>
<OutputData Name="XYZ">
<DataTitle>First Header Xyz</DataTitle>
<DataInfo>Ein paar Infos/Text 1.</DataInfo>
</OutputData>
</Section>
<Section Name="Sec2">
<SectionTitle>ZXY</SectionTitle>
<OutputData Name="ZXY">
<DataTitle>First Header ZXY</DataTitle>
<DataInfo>Ein paar Infos/Text 2.</DataInfo>
</OutputData>
</Section>
<Section Name="Sec3">
<SectionTitle>TZR</SectionTitle>
<OutputData Name="TZR">
<DataTitle>First Header TZR</DataTitle>
<DataInfo>Ein paar Infos/Text 3.</DataInfo>
</OutputData>
</Section>
...
</Root>Ich möchte jetzt über ein Dropdown (Formular: <select>), daß alle Werte von SectionTitle und den Section[@Name] als zu übergebenden Wert enthält (also so: <option value="Section[@Name]">SectionTitle </option>), genau die entsprechende OutputData im Dokument anzeigen lassen.
[...]
Also wenn ich im Dropdown ZXY auswähle wird nur die Section Sec2 angezeigt, usw.
Wie bitte??
<form name="f1" method="post">
<select name="header" onchange="self.document.f1.submit();">
<option>---</option>
<xsl:for-each select="Section">
<option value="{@Name}"><xsl:value-of select="SectionTitle" /></option>
xsl:for-each
<input type="hidden" name="myOption" value=" hier holst du den Wert mit JS aus dem aktuell Gewählten Option hinein " />
</form>
Mein Verständnis-Problem: Wie kann ich die vom POST-Formular (das select feld) übergebenen Variablen so verwenden, daß ich sie in die choose-abfrage richtig einbaue. Wie kann ich generell Post/Get-Variablen einbinden? Sitze jetzt schon ne weile dran und langsam schwirrt mir der Kopf :(
Ich verstehe nicht wirklich was du hier meinst.
Falls du meinst, dass nach dem Absenden des Formulars wieder dasselbe XML aufgerufen und dann die Daten der ausgewählten Option angezeit werden sollen ...
musst du Parameter an deinem XSL übergeben.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="myOption" />
und dann diesen Paramerter abfragen, voraussetzung ist en Template wie z.B.
<xsl:template match="Section">
<h2><xsl:value-of select="SectionTitle" /></h2>
<div>
<xsl:value-of select="OutputData/DataInfo" />
<div>
</xsl:template>
dann kannst du es so "abfragen";
<div id="gewählteDatensatz">
<xsl:apply-templates select="Section[@Name = $myOption]" />
</div>
Wenn du die XML/XSL-Transformation dem Browser überläßt, muss du allerdins zum JavaScript greifen und damit den/ die Parameter übergeben.
Beispiel dafür z.B. http://forum.de.selfhtml.org/archiv/2004/4/t78019/#m451662 oder http://forum.de.selfhtml.org/archiv/2006/3/t126420/#m815491
Grüße
Thomas