我要做的是格式化一个表头,以跨越for-each循环中输入的行数。我想设置一个单独的for-each循环来计算条目数并增加一个变量以便稍后使用,但我想这对xsl不起作用。这是我第一次尝试使用它。以下是我尝试设置的方法:
<xsl:variable name= "increment" select="0" />
<xsl:for-each select = "/keyboard/brand">
<xsl:for-each select = "/keyboard/brand/model">
<xsl:variable name="increment" select="$increment + 1" />
</xsl:for-each>
<tr>
<th rowspan = $increment><xsl:value-of select = "brand"/></td>
<xsl:for-each select = "/keyboard/brand/model">
<td><xsl:value-of select = "keytype"/></td>
<td><xsl:value-of select = "backlit"/></td>
</tr>
<tr>
</xsl:for-each>
<xsl:variable name= "increment" select="0" />
</xsl:for-each>
以下是我正在使用的xml的一部分:
<keyboard>
<brand>Logitech
<model>MK270
<keytype>Membrane</keytype>
<backlit check = "no">Qwerty</backlit>
<backlit check = "no">Numpad</backlit>
<interface>Wireless USB</interface>
<batterypowered>Yes</batterypowered>
<programmablekeys location = "none">None</programmablekeys>
<launchkeys location = "top">Media Controls</launchkeys>
</model>
<model>K350
<keytype>Membrane</keytype>
<backlit check = "no">Qwerty</backlit>
<backlit check = "no">Numpad</backlit>
<interface>Wireless USB</interface>
<batterypowered>Yes</batterypowered>
<programmablekeys location = "none">None</programmablekeys>
<launchkeys location = "side">Zoom Controls</launchkeys>
<launchkeys location = "top">Media Controls</launchkeys>
</model>
<model>G110
<keytype>Membrane</keytype>
<backlit check = "yes">Qwerty</backlit>
<backlit check = "yes">Numpad</backlit>
<interface>USB 2.0</interface>
<batterypowered>No</batterypowered>
<programmablekeys location = "side">12 programmable G-keys</programmablekeys>
<launchkeys location = "top">Audio/Mic/Media Controls</launchkeys>
</model>
</brand>
我想要做的是让品牌涵盖模型所占据的所有行。我将把每个模型放在它自己的行中。
我已经读过我应该使用position()函数而不是我试图处理它的方式,但我不确定如何在这种情况下实现它,因为我需要确定之前的rowspan大小position()将完成计数。
我确信我还有其他的问题需要解决,比如我还没有找到如何在最后一次迭代中添加最后一个tr,但这会在以后发生。我需要添加其余数据。
答案 0 :(得分:0)
我还不知道您想要哪种表格结构,但在<xsl:for-each select = "/keyboard/brand">
内可以使用例如<th rowspan="{count(model)}">
例如对于您的示例,<th rowspan="3">
,这是一个跨越三行的单元格,然后您可能希望使用内部<xsl:for-each select="model"><tr><td>...</td>...</tr></xsl:for-each>
填充它们。