我有一个XML文档:
<Cable>A030.000 </Cable>
<Address>
<ZIP>11411</ZIP>
<City>A-City</City>
<Street>B-Street</Steet>
<Hause>8</Hause>
<CableData>
<Damping>0242</Damping>
<DM-1>400</DM-1>
<Length-1>0054</Length-1>
<DM-2>400</DM-2>
<Length-2>0041</Length-2>
<DM-3>400</DM-3>
<Length-3>0024</Length-3>
</CableData>
</Address>
<Address>
<ZIP>11511</ZIP>
<City>A-City</City>
<Street>B-Street</Steet>
<Hause>10</Hause>
<CableData>
<Damping>0242</Damping>
<DM-1>400</DM-1>
<Length-1>0054</Length-1>
</CableData>
</Address>
这里每个Address节点都有一个子节点CableData,它又具有Damping和最多5对DM-xx Length-xx。
我想要实现的是使用由公共字段行计数器连接的XSL 2表创建。第一个表应包含除CableData之外的地址信息,而另一个表应显示每个地址的CableData内容。表的公共数据位于第一列,即行号,用于连接两个表中的数据。
1-st表:
<table>
<tr>
<th>Num</th>
<th>Zip</th>
<th>City</th>
<th>City dstr</th>
<th>Street</th>
<th>Hause</th>
<th>Hause Ltr</th>
</tr>
<tr>
<td>1</td>
<td>12345</td>
<td>A-City</td>
<td>North</td>
<td>B-Street</td>
<td>1</td>
<td>C</td>
</tr>
<tr>
<td>2</td>
<td>12345</td>
<td>A-City</td>
<td>North</td>
<td>B-Street</td>
<td>2</td>
<td>D</td>
</tr>
</table>
2-nd table
<table>
<tr>
<th>Num</th>
<th>Damping</th>
<th>DM-1</th>
<th>Length-1</th>
<th>DM-2</th>
<th>Length-2</th>
<th>DM-3</th>
<th>Length-3</th>
<th>DM-4</th>
<th>Length-4</th>
<th>DM-5</th>
<th>Length-5</th>
</tr>
<tr>
<td>1</td>
<td>0242</td>
<td>400</td>
<td>0054</td>
<td>400</td>
<td>0041</td>
<td>400</td>
<td>0024</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td>0242</td>
<td>400</td>
<td>0054</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
两个表中的公共列是Num。
答案 0 :(得分:0)
提示1:请提供完整且格式正确的文档,例如评论中已提及的@ michael.hor257k等Minimal,Complete和Verifiable示例。
提示2:请验证您的给定xml。这些都无效。 [例如:<street>
已被</steet>
]
提示3:告诉我们问题出在哪里。如果您只是搜索某人,谁来完成您的工作,那么这是一个错误的地方。记住这一点。
看看:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="UTF-8" method="html"/>
<xsl:template match="/">
<xsl:call-template name="createAddressesTab"/>
<xsl:call-template name="createDampingTab"/>
</xsl:template>
<xsl:template name="createAddressesTab">
<table>
<tr>
<th>Num</th>
<th>Zip</th>
<th>City</th>
<th>City dstr</th>
<th>Street</th>
<th>Hause</th>
<th>Hause Ltr</th>
</tr>
<xsl:for-each select="//Address">
<tr>
<td><xsl:value-of select="position()"/></td>
<td><xsl:value-of select="ZIP"/></td>
<td><xsl:value-of select="City"/></td>
<td><!-- provide some xml for this tag --></td>
<td><xsl:value-of select="Street"/></td>
<td><xsl:value-of select="Hause"/></td>
<td><!-- provide some xml for this tag --></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template name="createDampingTab">
<table>
<tr>
<th>Num</th>
<th>Damping</th>
<th>DM-1</th>
<th>Length-1</th>
<th>DM-2</th>
<th>Length-2</th>
<th>DM-3</th>
<th>Length-3</th>
<th>DM-4</th>
<th>Length-4</th>
<th>DM-5</th>
<th>Length-5</th>
</tr>
<xsl:for-each select="//Address">
<tr>
<td><xsl:value-of select="position()"/></td>
<td><xsl:value-of select="CableData/Damping"/></td>
<td><xsl:value-of select="CableData/DM-1"/></td>
<td><xsl:value-of select="CableData/Length-1"/></td>
<td><xsl:value-of select="CableData/DM-2"/></td>
<td><xsl:value-of select="CableData/Length-2"/></td>
<td><xsl:value-of select="CableData/DM-3"/></td>
<td><xsl:value-of select="CableData/Length-3"/></td>
<td><xsl:value-of select="CableData/DM-4"/></td>
<td><xsl:value-of select="CableData/Length-4"/></td>
<td><xsl:value-of select="CableData/DM-5"/></td>
<td><xsl:value-of select="CableData/Length-5"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
<强>说明:强> 非常直接的#34;高级&#34;一。它在XSLT 1.0中完全正常运行。调用执行所请求工作的2个命名模板。
它完成了工作。如果有任何问题,请通过评论询问。 如果您愿意,请提出并/或关闭此问题