xslt 1.0按节点属性分组并输出为html
我已经搜索了stackoverflow,但不知何故没有找到适合我的示例。谈到xslt,我不是特别熟练。我想转换给定的XML:xslt 1.0按节点属性分组并输出为html,html,xml,xslt,Html,Xml,Xslt,我已经搜索了stackoverflow,但不知何故没有找到适合我的示例。谈到xslt,我不是特别熟练。我想转换给定的XML: <ROOT> <LIST id="1" name="list1"> <ITEM rowNumber="1" data="list1row1" name="firstRow"> </ITEM> <ITEM rowNumber="2" data="list1row2"
<ROOT>
<LIST id="1" name="list1">
<ITEM rowNumber="1" data="list1row1" name="firstRow">
</ITEM>
<ITEM rowNumber="2" data="list1row2" name="secondRow">
</ITEM>
<ITEM rowNumber="3" data="list1row3" name="thirdRow">
</ITEM>
</LIST>
<LIST id="2" name="list2">
<ITEM rowNumber="1" data="list2row1" name="firstRow">
</ITEM>
<ITEM rowNumber="2" data="list2row2" name="secondRow">
</ITEM>
<ITEM rowNumber="3" data="list2row3" name="thirdRow">
</ITEM>
</LIST>
<LIST id="3" name="list3">
<ITEM rowNumber="1" data="list3row1" name="firstRow">
</ITEM>
<ITEM rowNumber="2" data="list3row2" name="secondRow">
</ITEM>
<ITEM rowNumber="3" data="list3row3" name="thirdRow">
</ITEM>
</LIST>
</ROOT>
进入此HTML:
<table>
<tr>
<td>1</td>
<td>firstRow</td>
<td id="list1_row1">list1row1</td>
<td id="list2_row1">list2row1</td>
<td id="list3_row1">list3row1</td>
</tr>
<tr>
<td>2</td>
<td>secondRow</td>
<td id="list1_row2">list1row2</td>
<td id="list2_row2">list2row2</td>
<td id="list3_row2">list3row2</td>
</tr>
<tr>
<td>3</td>
<td>thirdRow</td>
<td id="list1_row3">list1row3</td>
<td id="list2_row3">list2row3</td>
<td id="list3_row3">list3row3</td>
</tr>
</table>
1.
第一排
清单1如箭头1所示
列表2Row1
列表3行1
2.
第二排
列表1如箭头2所示
列表2Row2
列表3Row2
3.
蒂德罗
清单1如箭头3所示
列表2如箭头3所示
列表3row3
所以我想把所有的行组合成一个表行,单元格中包含行号、名称和数据。如果行号和名称是隐藏单元格,则可以
我正在考虑使用
检查是否显示元数据(行号和名称)。单元格的ID来自列表名(或ID)和行号(因此可以使用javascript进行搜索)
提前感谢您的帮助 假设每个列表的项目数(即行数)完全相同,请尝试以下方法: XSLT1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:key name="item-by-row" match="ITEM" use="@rowNumber"/>
<xsl:template match="/">
<table>
<xsl:for-each select="ROOT/LIST[1]/ITEM">
<tr>
<td><xsl:value-of select="@rowNumber"/></td>
<td><xsl:value-of select="@name"/></td>
<xsl:for-each select="key('item-by-row', @rowNumber)">
<td id="{../@name}_row{@rowNumber}"><xsl:value-of select="@data"/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
工作起来很有魅力。谢谢你,先生!我还曾经帮助我进一步修改这个例子以适应我的情况。