使用 XSL 和 XML 在动态 HTML table 中拆分行
Row splitting in a dynamic HTML table using XSL and XML
我正在尝试使用 XSL 将循环拆分到第二行,但不确定如何处理。让我给你看我的代码来解释。
XML
<main>
<book>
<name>Harry Potter 1</name>
<pages>347</pages>
<authors>
<name>J.K Rowling</name>
<age>49</age>
</authors>
<authors>
<name>Dan Brown</name>
<age>59</age>
</authors>
</book>
<book>
<name>Harry Potter 2</name>
<pages>800</pages>
<authors>
<name>J.K Rowling</name>
<age>49</age>
</authors>
<authors>
<name>Barack Obama</name>
<age>40</age>
</authors>
</book>
XSL
<table class="table table-bordered" border="1">
<xsl:for-each select="main/book">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="pages" /></td>
</tr>
<tr>
<xsl:for-each select="./authors">
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="age" /></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
目前这输出是这样的。
我想完成的事情是这样的
如您所见,作者并没有堆叠在彼此下方,也没有彼此相邻。
谁能帮我解释一下这个问题?我将不胜感激!感谢阅读。
请求的输出似乎没有多大意义(在同一列中混合书名和作者姓名,以及页数和作者年龄),但可以使用以下方法轻松实现:
<xsl:template match="/">
<table class="table table-bordered" border="1">
<xsl:for-each select="main/book">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="pages" /></td>
</tr>
<xsl:for-each select="authors">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="age" /></td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>
我正在尝试使用 XSL 将循环拆分到第二行,但不确定如何处理。让我给你看我的代码来解释。
XML
<main>
<book>
<name>Harry Potter 1</name>
<pages>347</pages>
<authors>
<name>J.K Rowling</name>
<age>49</age>
</authors>
<authors>
<name>Dan Brown</name>
<age>59</age>
</authors>
</book>
<book>
<name>Harry Potter 2</name>
<pages>800</pages>
<authors>
<name>J.K Rowling</name>
<age>49</age>
</authors>
<authors>
<name>Barack Obama</name>
<age>40</age>
</authors>
</book>
XSL
<table class="table table-bordered" border="1">
<xsl:for-each select="main/book">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="pages" /></td>
</tr>
<tr>
<xsl:for-each select="./authors">
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="age" /></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
目前这输出是这样的。
我想完成的事情是这样的
如您所见,作者并没有堆叠在彼此下方,也没有彼此相邻。
谁能帮我解释一下这个问题?我将不胜感激!感谢阅读。
请求的输出似乎没有多大意义(在同一列中混合书名和作者姓名,以及页数和作者年龄),但可以使用以下方法轻松实现:
<xsl:template match="/">
<table class="table table-bordered" border="1">
<xsl:for-each select="main/book">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="pages" /></td>
</tr>
<xsl:for-each select="authors">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="age" /></td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>