XML ドキュメントがあります。
<Gym>
<Trainee>
<Trainee_ID>1521</Trainee_ID>
<Trainee_Name>Mary Andersen</Trainee_Name>
<Trainee_Age>23</Trainee_Age>
</Trainee>
<Trainee>
<Trainee_ID>1522</Trainee_ID>
<Trainee_Name>Jane Sellers</Trainee_Name>
<Trainee_Age>56</Trainee_Age>
</Trainee>
<Trainee>
<Trainee_ID>1523</Trainee_ID>
<Trainee_Name>Julie Aniston</Trainee_Name>
<Trainee_Age>32</Trainee_Age>
</Trainee>
<Class>
<Trainee_ID>1521</Trainee_ID>
<Course_ID>A21</Course_ID>
<Class_Room>A1</Class_Room>
</Class>
<Class>
<Trainee_ID>1522</Trainee_ID>
<Course_ID>A22</Course_ID>
<Class_Room>B2</Class_Room>
</Class>
<Class>
<Trainee_ID>1523</Trainee_ID>
<Course_ID>B24</Course_ID>
<Class_Room>B3</Class_Room>
</Class>
<Course>
<Course_ID>A21</Course_ID>
<Course_Title>Yoga</Course_Title>
<Course_Hours_Per_Week>2</Course_Hours_Per_Week>
</Course>
<Course>
<Course_ID>A22</Course_ID>
<Course_Title>Pilates</Course_Title>
<Course_Hours_Per_Week>2</Course_Hours_Per_Week>
</Course>
<Course>
<Course_ID>B24</Course_ID>
<Course_Title>Aerobic</Course_Title>
<Course_Hours_Per_Week>3</Course_Hours_Per_Week>
</Course>
</Gym>
私がやりたいことは、XSL で 3 つのテーブルを作成することです。ヘッダーは子要素の名前 (1 回のみ)、サブヘッダーは孫要素の名前 (1 回のみ) で、残りの行と列には値が入力されます。孫要素の。
これは私が得た限りです:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/Gym">
<html>
<body>
<xsl:for-each select="*">
<table border="1">
<tr>
<xsl:if test="position()='1' or position()='4' or position()='7'">
<xsl:value-of select="translate(name(.), 'abcdefghijklnmopqrstuvwxyz', 'ABCDEFGHIJKLNMOPQRSTUVWXYZ')"/>
</xsl:if>
</tr>
<tr>
<xsl:if test="position()='1' or position()='4' or position()='7'">
<xsl:for-each select="*">
<th><xsl:value-of select="name(.)"/></th>
</xsl:for-each>
</xsl:if>
</tr>
<tr>
<xsl:for-each select="*">
<th>
<xsl:value-of select="."/>
</th>
</xsl:for-each>
</tr>
</table>
<p></p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
これは出力です:
(出典: UploadScreenshot.com )
何が起こっているかというと、サブ要素ごとに新しいテーブルが作成されるたびに、3 つのテーブルすべてを自動的に作成し、ヘッダーとサブヘッダーを作成し、その後データを入力するスマート コードが必要です。 . 私が欲しいのは次のようなものです(色とテキストのフォーマットは無視してください):
XSLT コードで実行したいのは、要素インスタンスごとに 1 つのテーブルを作成し、要素の名前をヘッダーとして配置した後、サブ要素をヘッダーとして 1 回配置してから、テーブルにデータを入力することです。