2011-08-16 20 views
3

一部のプログラムの構成情報を含むXMLファイルがあります。私はHTMLテーブルとしてXMLを表示するには、XSLスタイルシートを作成したいXMLをHTMLテーブルとして表示する方法

<master> 
    <childCat1> 
    <param1>test1</param1> 
    <param2>test2</param2> 
    </childCat1> 
    <childCat2> 
    <item1>test3</item1> 
    <item2>test4</item2> 
    </childCat2> 
</master>* 

: ファイルは次のように見えます。 XMLを表に変換するためにXSLを使用する方法をお勧めしますか? 毎回スタイルシートを再訪する必要なしに、カテゴリとパラメータを追加できるようにする必要があります。スタイルシートがxmlが常にカテゴリ、パラメータ、値を持っていると理解していても、

表では3つの列が必要です。私は表示する列が欲しい:

Category Parameter Value 
-------------------------------- 
childCat1 param1  test1 
childCat1 param2  test2 
-------------------------------- 
childcat2 item1  item1 
childcat2 item2  item2 

など が表示されるまでのカテゴリー間の区切り線を持っているためにいいだろうが、私はそれらなしで生きることができます。

ありがとうございました。他のすべてが失敗した場合は、これを行うためのPHPコードを書きますが、XSLスタイルシートはもっと汎用性があります。

明確化:

私の好みは、事前に一つだけの事を知っているXSLためである - XMLの要素、カテゴリとその直下の子の二つのレベルを持っていること。だから私は何を追加(または削除) - 追加のカテゴリや子供など何でも、x​​slは手動で更新することなく動作します。

答えて

0

私は、これはあなたが

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/master"> 
<html><body> 
<table border="1"> 
    <tr bgcolor="yellow"> 
     <th style="text-align:left">Category</th> 
     <th style="text-align:left">Parameter</th> 
     <th style="text-align:left">Value</th> 
     </tr> 
    <xsl:apply-templates select="./*" mode='category' /> 

</table> 
</body></html> 
</xsl:template> 

<xsl:template match='*' mode='category'> 
<tr><td colspan='3'></td></tr> 
<xsl:apply-templates select="./*" mode='parameter' /> 
</xsl:template> 

<xsl:template match='*' mode='parameter'> 
<tr> 
<td><xsl:value-of select="name(..)"/></td> 
<td><xsl:value-of select="name()"/></td> 
<td><xsl:value-of select="."/></td> 
</tr> 

</xsl:template> 
</xsl:stylesheet> 
探しているものだと思います
関連する問題