Hallo
ich möchte mithilfe von XSL nur eine bestimmte Anzahl von Werten aus meinem XML ausgeben.
Die Knoten des XML befinden sich alle auf einer Ebene und ich muss quasi den Start und den Endpunkt im XSL bestimmen. Leider gelingt mir das nicht.
Ich poste mal mein XML und das dazugehörige XSL in der Hoffnung jemand kann mir auf die Sprünge helfen.
Na vieleicht hilft Dir dieses.
*** Datei node.xsl ****
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- xmlns bedeutet Namensraum -->
<xsl:output method="html"/>
<xsl:template match="/">
<!-- abarbeitung ab root-tag: /, sonst z.B. "main" -->
<TABLE BORDER="1">
<TR>
<TD><H1>Node</H1></TD>
<TD><H2>Label</H2></TD>
<TD><H4>Position</H4></TD>
</TR>
<xsl:for-each select="main">
xsl:apply-templates/
<!-- Es wird fuer jeden Datensatz nach einem passenden Template gesucht -->
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template match="node1">
<TR BGCOLOR="lightblue">
<TD><H2>node1 </H2></TD>
<TD><H3><xsl:value-of select="label"/><xsl:value-of select="nodelabel"/></H3></TD>
<TD><H4><xsl:value-of select="position"/></H4></TD>
</TR>
</xsl:template>
<!-- Unterdruecke Anzeige fuer node2 -->
<xsl:template match="node2">
</xsl:template>
<!-- Anzeige fuer node3 in anderer farbe -->
<xsl:template match="node3">
<TR BGCOLOR="red">
<TD><H2>node3</H2></TD>
<TD><H3><xsl:value-of select="label"/><xsl:value-of select="nodelabel"/></H3></TD>
<TD><H4><xsl:value-of select="position"/></H4></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
**** Datei node.xml ****
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!--
XML-Test 08-2004
-->
<!-- Verschönerung mit extensible stylesheet language -->
<?xml-stylesheet href="node.xsl" type="text/xsl"?>
<!-- geht auch mit css: "style.css" type="text/css", aber nicht so gut -->
<!DOCTYPE main [
<!-- ELEMENT-Zeilen können in beliebiger Reihenfolge stehen -->
<!ELEMENT main (node1,node2?,node3?)+>
<!-- + steht für ein oder mehrere -->
<!ELEMENT node1 (nodelabel?,label?,position?)>
<!ELEMENT node2 (nodelabel?,label?,position?)>
<!ELEMENT node3 (nodelabel?,label?,position?)>
<!-- ? steht für optional, Reihenfolge muß exakt eingehalten werden
(tag1?,tag2?,...)+ steht für beliebig -->
<!ELEMENT label (#PCDATA)>
<!-- #PCDATA = parced character data = belebige Zeichenkette -->
<!ELEMENT position (#PCDATA)>
]>
<main>
<node1>
<label>Test1</label>
<position>1.1</position>
</node1>
<node1>
<label>Test2</label>
<position>1.2</position>
</node1>
<node2>
<nodelabel>Test3</nodelabel>
<position>1.2.1</position>
</node2>
<node3>
<nodelabel>Test4</nodelabel>
<position>1.2.1.1</position>
</node3>
<node1>
<nodelabel>Test5</nodelabel>
<position>1.3</position>
</node1>
<!-- usw.-->
</main>
Ich hoffe es hilft etwas weiter.
mfg
Das Schmunzelmonster
Ps.: Ist der Wechsel zwischen label (ähm sollte das nich lable heissen?) und nodelabel eigendlich beabsichtigt??