-1
这里是一个示例XML我必须从xml转换为HTML。我需要找出其中有一个共同的价值元素,并把它合并到一个单一的表列在HTML
<?xml version='1.0' encoding='UTF-8'?>
<message>
<body>
<asset>
<asset-id>test_01</asset-id>
<asset-name>report_test</asset-name>
<asset-version>1</asset-version>
<entity>
<id>project_test</id>
<entity-record>
<id>864d6141-712b-11e7-b775-f9304f8b3051#-</id>
<field>
<id>name</id>
<value>Transport</value>
</field>
<field>
<id>task</id>
<value>Person1</value>
</field>
</entity-record>
<entity-record>
<id>864d6141-812b-11e7-b775-f9304f8b3951#-</id>
<field>
<id>name</id>
<value>Transport</value>
</field>
<field>
<id>task</id>
<value>Person2</value>
</field>
</entity-record>
<entity-record>
<id>864d6141-712b-11e7-b775-f9314f8b3951#-</id>
<field>
<id>name</id>
<value>Food </value>
</field>
<field>
<id>task</id>
<value>Person3</value>
</field>
</entity-record>
<entity-record>
<id>864e6141-712b-11e7-b775-f9304f8b3951#-</id>
<field>
<id>name</id>
<value>Food</value>
</field>
<field>
<id>task</id>
<value>Person4</value>
</field>
</entity-record>
<entity-record>
<field>
<id>name</id>
<value>Food</value>
</field>
<field>
<id>task</id>
<value>Person5</value>
</field>
</entity-record>
<entity-record>
<field>
<id>name</id>
<value>Transport</value>
</field>
<field>
<id>task</id>
<value>Person3</value>
</field>
</entity-record>
</entity>
</asset>
</body>
</message>
这里是一个可怜的尝试我尝试使用Muenchian方法前两个细胞。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:key name="fieldbyid" match="field" use="value" />
<xsl:template match="message">
<html>
<body>
<table border="1">
<tr>
<td>Project</td>
<td>Task</td>
</tr>
<tr>
<xsl:for-each select="body/asset/entity[id[text()='project_test']]/entity-record">
<xsl:sort select="field[id[text()='name']]/value"/>
<xsl:for-each select="field[count(./value|key('fieldbyid','value')[1])=1]">
<tr>
<td rowspan="{count(key('fieldbyid','value'))}">
<xsl:value-of select="field[id[text()='name']]/value"/>
</td>
<td><xsl:value-of select="field[id[text()='task']]/value"/></td>
</tr>
</xsl:for-each>
</xsl:for-each>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
这里是输出我得到
<html>
<body>
<table border="1">
<tr>
<td>Project</td>
<td>Task</td>
</tr>
<tr>
<tr>
<td>Food</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Person4</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Food</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Person5</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Food </td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Person3</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Transport</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Person1</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Transport</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Person2</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Transport</td>
<td rowspan="0"></td>
<td></td>
</tr>
<tr>
<td>Person3</td>
<td rowspan="0"></td>
<td></td>
</tr>
</tr>
</table>
</body>
</html>
这是我多么希望我的输出看, enter image description here enter image description here 在去除第二for循环,即保持代码出于对循环,<xsl:for-each select="field[count(./value|key('fieldbyid','value')[1])=1]">
它似乎至少显示值。 这个声明究竟意味着什么? 也值“。”。显示id和value都是我在这种情况下使用./value的原因。 任何帮助将是伟大的! 感谢
我不明白你想要输出什么 - 请用单词解释逻辑。 - 如果您可以使用XSLT 2.0,那么为什么不使用'xsl:for-each-group'而不是Muenchian分组? –
而我在您的输入中看不到任何金额。 –