我正在学习XSD,到目前为止,我试图用HTML来转换XML结果不好。 我有这个XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<sales>
<division id="North">
<revenue>10</revenue>
<growth>9</growth>
<bonus>7</bonus>
</division>
<division id="South">
<revenue>4</revenue>
<growth>3</growth>
<bonus>4</bonus>
</division>
<division id="West">
<revenue>6</revenue>
<growth>-1.5</growth>
<bonus>2</bonus>
</division>
</sales>
使用XSL我想要这个:
这是我的XSL代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/sales">
<table border = "1" >
<tr>
<th>Division</th>
<th>Revenue</th>
<th>Growth</th>
<th>Bonus</th>
</tr>
<xsl:apply-templates select ="/sales/division"/>
</table>
</xsl:template>
<xsl:template match="/sales/division">
<tr>
<td><xsl:value-of select ="/sales/division/@id"/> </td>
<td><xsl:value-of select ="/sales/division/revenue"/> </td>
<td><xsl:value-of select ="/sales/division/growth"/> </td>
<td><xsl:value-of select ="/sales/division/bonus"/> </td>
</tr>
</xsl:template>
</xsl:stylesheet>
我得到了这个:
我也尝试过:
<xsl:for-each select ="/sales/division" >
<tr>
<td><xsl:value-of select ="/sales/division/@id"/> </td>
<td><xsl:value-of select ="/sales/division/revenue"/> </td>
<td><xsl:value-of select ="/sales/division/growth"/> </td>
<td><xsl:value-of select ="/sales/division/bonus"/> </td>
</tr>
但我有同样糟糕的结果。
答案 0 :(得分:2)
你想要这样的XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="sales"/>
</xsl:template>
<xsl:template match="sales">
<table border = "1" >
<tr>
<th>Division</th>
<th>Revenue</th>
<th>Growth</th>
<th>Bonus</th>
</tr>
<xsl:apply-templates select ="division"/>
</table>
</xsl:template>
<xsl:template match="division">
<tr>
<td><xsl:value-of select ="@id"/> </td>
<td><xsl:value-of select ="revenue"/> </td>
<td><xsl:value-of select ="growth"/> </td>
<td><xsl:value-of select ="bonus"/> </td>
</tr>
</xsl:template>
</xsl:stylesheet>
这会产生如下结果:
您一直在使用absolute路径,而不是relative路径到当前节点。
通过使用类似/sales/division/@id
的绝对路径,它总会选择第一个路径。一旦你理解了绝对与相对的概念,你应该没问题。
请注意,您在问题中声明希望将它们列为 North,West,South ,但这不是文件中元素的顺序。