Hallo,
seit kurzem mache ich berufsbedingt meine ersten Schritte mit XSLT und XPath und bin natürlich gleich an meine Grenzen bei folgendem Problem gestoßen. Vielleicht kann mir hier jemand helfen
Ein XML-Dokument hat grob folgende Struktur. Es sind noch wesentlich mehr Elemente innerhalb eines <TestCase> enthalten, aber das für meine Frage Relevante ist drin.
<TestCaseData>
<TestCase> <!-- Diese <TestCase> Struktur kann beliebig oft wiederholt werden-->
<TestCaseId>ID 1</TestCaseId>
<Name>Name 1</Name>
<FolderYn>Y</FolderYn>
</TestCase>
<TestCase>
[...]
</TestCase>
</TestCaseData>
[/code}
Dieses XML möchte ich in eine HTML-Struktur transformieren, die folgendermaßen aufgebaut sein soll.
* Wenn ein <TestCase> den Wert "Y" im Element <FolderYn> enthält, so soll <Name> als Überschrift ausgegeben werden.
* Wenn auf einen <TestCase> mit <FolderYn>='Y' ein <TestCase> mit <FolderYn>='N' folgt, dann soll eine Tabelle aufgemacht werden.
* Für jeden folgenden <TestCase> der ein <FolderYn>='N' enthält, wird <Name> als neue Tabellenreihe angefügt.
* Wenn auf einen <TestCase> mit <FolderYn>='N' ein <TestCase> mit <FolderYn>='Y' folgt, dann soll die Tabelle geschlossen werden.
Also im Endeffekt dass so etwas entsteht:
[code lang=html]<h3>Name 1</h3> <!-- Solange kein FolderYn=N folgt -->
<h3>Name 2</h3> <!-- Hierauf folgt ein FolderYn=Y -->
<table>
<tr>
<th>Test Case ID</th>
<th>Name 3</th>
</tr>
<tr> <!-- Solange jedes folgende FolderYn=N ist, hänge eine Zeile ran -->
<td>ID 1</td>
<td>Name 4</td>
</tr>
<tr>
<td>ID 2</td>
<td>Name 5</td>
</tr>
</table>
<h3>Name 6</h3> <!-- Hier ist wieder ein FolderYn=Y -->
<table>
<tr>
<th>Test Case ID</th>
<th>Name 7</th>
</tr>
<tr>
<td>ID 3</td>
<td>Name 8</td>
</tr>
<tr>
<td>ID 4</td>
<td>Name 9</td>
</tr>
</table>
Ich hoffe, das ist einigermaßen verständlich beschrieben Wenn ihr Rückfragen habt, immer her damit! Dann versuche ich es noch etwas deutlicher zu formulieren.
Ich habe bereits verschiedene Ansätze, if-Anweisungen und for-each versucht, aber ich schaffe es einfach nicht. Hat hier jemand eine Idee?
Viele Grüße,
Robert