多くの未知数を含む非常に大きな XML ファイルの抜粋があります。この XML ファイルには多数の conceptGrp が含まれており、それぞれにさまざまな数の languageGrp/languages を含めることができ、さらにさまざまな数の用語を含めることができます。
<mtf>
<conceptGrp>
<concept>1</concept>
<languageGrp>
<language lang="DE" type="Deutsch"/>
<termGrp>
<term>Abbildung</term>
</termGrp>
</languageGrp>
<languageGrp>
<language lang="PL" type="Polnisch"/>
<termGrp>
<term>ilustracja</term>
</termGrp>
</languageGrp>
<languageGrp>
<language lang="RU" type="Russisch"/>
<termGrp>
<term>иллюстрация</term>
</termGrp>
<termGrp>
<term>рисунок</term>
</termGrp>
</languageGrp>
<languageGrp>
<language lang="CS" type="Tschechisch"/>
<termGrp>
<term>vyobrazení</term>
<descripGrp>
<descrip type="Autor">MK</descrip>
</descripGrp>
</termGrp>
</languageGrp>
</conceptGrp>
</mtf>
これらのさまざまな可能性に対応する html テーブルが必要です。テーブルの形式は次のとおりです。
言語ごとに (いくつであっても) 別の行、用語ごとに別の行 – 以下のように: 複数の用語がある場合、それらは同義語として扱われ、以下の例。
Concept Deutsch Polnisch Russisch Tschechisch
1 Abbildung ilustracja иллюстрация vyobrazení
1 рисунок
私の問題: 最初の languageGrp に複数の用語が含まれる場合もあれば、3 番目の用語が含まれる場合もあります。conceptGrp をグループ化しようとしましたが、複雑な方法でも問題はありませんでした-) これが機能する私のバージョンですが、それを次のように適応させる必要があります。新しいファイルごとに、言語や用語などの数がわからないため、.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="mtf">
<html>
<body>
<h2>Terminologie</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="conceptGrp">
<xsl:for-each select=".">
<table>
<tr> <!--Zeile 1-->
<td>Konzept-ID</td>
<xsl:for-each select="languageGrp">
<td><xsl:value-of select="language/@type"/></td> <!--Spalte2-->
</xsl:for-each>
</tr>
<tr> <!--Zeile 2-->
<td><xsl:value-of select="concept"/></td> <!--Spalte1-->
<xsl:for-each select="languageGrp//termGrp[1]">
<td><xsl:value-of select="term"/></td> <!--Spalte2-->
</xsl:for-each>
</tr>
<xsl:if test="languageGrp//termGrp[2]">
<tr>
<td><xsl:value-of select="concept"/></td>
<td><xsl:value-of select="languageGrp[1]//termGrp[2]/term"/></td>
<td><xsl:value-of select="languageGrp[2]//termGrp[2]/term"/></td>
<td><xsl:value-of select="languageGrp[3]//termGrp[2]/term"/></td>
<td><xsl:value-of select="languageGrp[4]//termGrp[2]/term"/></td>
</tr>
</xsl:if>
</table>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
誰かがもっとエレガントでグローバルな方法でプッシュしてくれませんか? これは非常にありがたいです。