Ich habe so xml:XML-Tabelle, wie Position zu bekommen() von Context-Knoten mit dem angegebenen Vorfahren (n)
<A1>
<B1>
<C1>
<C2>
<C3>
</B1>
<B2>
<C4>
<C5>
<C6>
</B2>
</A1>
<A2>
<B3>
<C7>
<C8>
<C9>
</B3>
<B4>
<C10>
<C11>
<C12>
</B4>
</A2>
Ich brauche es mit verschachtelten Zeilen Tabelle zu transformieren:
<table border="yes">
<tr>
<td>A1</td>
<td>B1</td>
<td>C1</td>
</tr>
<tr>
<td></td>
<td></td>
<td>C2</td>
</tr>
<tr>
<td></td>
<td></td>
<td>C3</td>
</tr>
<tr>
<td></td>
<td>B2</td>
<td>C3</td>
</tr>
<tr>
<td></td>
<td></td>
<td>C4</td>
</tr>
A und B erscheinen nur, wenn sie neu sind (nicht in jeder Zeile wiederholen);
Ich versuche Position zu verwenden()
<xsl:template match="c">
<tr>
<td>
<xsl:if test="IT IS THE FIRST C IN A">
<xsl:value-of select="ancestor::A"/>
</xsl:if>
</td>
<td>
<xsl:if test="position(1)">
<xsl:value-of select="parent"/>
</xsl:if>
</td>
<td>
<xsl:value-of select="."/>
</td>
</tr>
</xsl:template>
Es scheint, dass wir Position() für Ahnen emulieren soll. Gibt es eine allgemeine Lösung für eine beliebige Anzahl von geschachtelten Zeilen?
Könnten Sie bitte besser erklären? Warum sollten Knoten, die von B2 und C3 ausgehen, nicht in der Ausgabe erscheinen? Die Regel zur Erzeugung der Ausgabe ist nicht klar. –
die Antwort unten passt, danke. Die Idee war, dass alle Knoten A und B nur einmal in der Tabelle erscheinen. sich nicht wiederholend. – rudnev