2014-06-29 135 views
0

我想基於以下XML表創建一個帶有XSL的HTML表。目標是創建一個包含所有公司名稱和所有產品名稱的表格。從具有多個屬性的節點創建XML XSL表

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="style.xsl"?> 

<Companies> 
    <Company CompanyID="1"> 
    <CompanyInfo> 
    <Name>ABC</Name> 
    <ProductNames> 
     <ProductName Name="Product 1" /> 
     <ProductName Name="Product 2" /> 
     <ProductName Name="Product 3" /> 
     <ProductName Name="Product 4" /> 
    </ProdcutNames> 
    </CompanyInfo> 
    </Company> 

    <Company CompanyID="2"> 
    <CompanyInfo> 
    <Name>TVM</Name> 
    <ProductNames> 
     <ProductName Name="Product A" /> 
     <ProductName Name="Product B" /> 
     <ProductName Name="Product C" /> 
     <ProductName Name="Product D" /> 
    </ProdcutNames> 
</CompanyInfo> 
</Company> 
</Companies> 

目前我有以下XSL表(這是不夠的)。

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output indent="yes"/> 

<xsl:template match="/"> 

<html> 
<body> 
<h2>Table View</h2> 
<table border="1"> 
    <th>Name</th> 
    <th>ProductName</th> 
    </tr> 

    <xsl:for-each select="Companies/Company/CompanyInfo"> 
    <tr> 
     <td><xsl:value-of select="Name" /></td> 
     <td><xsl:value-of select="ProductNames/ProductName/@Name" /></td> 
    </tr> 
    </xsl:for-each> 

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

</xsl:stylesheet> 

目標輸出應該是這樣的:

<table> 
<tr> 
<th>CompanyName</th> 
<th>ProductName</th> 
</tr> 
<tr> 
<td>ABC</td> 
<td>Product 1</td> 
</tr> 
<tr> 
<td>ABC</td> 
<td>Product 2</td> 
</tr> 
<tr> 
<td>ABC</td> 
<td>Product 3</td> 
</tr> 
<tr> 
<td>ABC</td> 
<td>Product 4</td> 
</tr> 

<tr> 
<td>TVM</td> 
<td>Product A</td> 
</tr> 
<tr> 
<td>TVM</td> 
<td>Product B</td> 
</tr> 
<tr> 
<td>TVM</td> 
<td>Product C</td> 
</tr> 
<tr> 
<td>TVM</td> 
<td>Product D</td> 
</tr> 
</table> 

目前我只能查看1產品每家公司,但不是所有的人。因此,我的目標是爲每個產品提供相應公司名稱的表格。

如果有人能夠幫助我,這將是非常好的!

回答

1

變化

<xsl:for-each select="Companies/Company/CompanyInfo"> 
    <tr> 
     <td><xsl:value-of select="Name" /></td> 
     <td><xsl:value-of select="ProductNames/ProductName/@Name" /></td> 
    </tr> 
    </xsl:for-each> 

<xsl:for-each select="Companies/Company/CompanyInfo/ProductNames/ProductName/@Name"> 
    <tr> 
     <td><xsl:value-of select="ancestor::CompanyInfo/Name" /></td> 
     <td><xsl:value-of select="." /></td> 
    </tr> 
    </xsl:for-each> 
+0

謝謝,這工作!大! –

相關問題