尝试从xml获取html 我从一个数据集生成了以下xml,这意味着我无法改变XML的结构。我想我在循环通过A和B的第二个循环中缺少。
<Myds>
<A>
<col1>Row1</col1>
<col2>1</col2>
<col3>2</col3>
</A>
<A>
<col1>Row2</col1>
<col2>4</col2>
<col3>3</col3>
</A>
<B>
<col1>Row1</col1>
<col2>1</col2>
<col3>2</col3>
</B>
<B>
<col1>Row2</col1>
<col2>4</col2>
<col3>3</col3>
</B>
</Myds>
这是XSL
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match='/'>
<xsl:for-each select ='./Myds'>
<table>
<xsl:for-each select ='A'>
<tr>
<td><xsl:value-of select='col1'/></td>
<td><xsl:value-of select='col2'/></td>
<td><xsl:value-of select='col3'/></td>
</tr>
</xsl:for-each>
</table>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我有这个输出
<?xml version="1.0" encoding="utf-8"?>
<table>
<tr><td>Row1</td><td>1</td><td>2</td></tr>
<tr><td>Row2</td><td>4</td><td>3</td></tr>
</table>
但是我期待着这个
<table>//(For Table A)
<tr><td>Row1</td><td>1</td><td>2</td></tr>
<tr><td>Row2</td><td>4</td><td>3</td></tr>
</table>
<table>//(For Table B)
<tr><td>Row1</td><td>1</td><td>2</td></tr>
<tr><td>Row2</td><td>4</td><td>3</td></tr>
</table>
我想我需要这样的东西但不完全是......
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match='/'>
<xsl:for-each select ='./Myds'>
<table>
<xsl:for-each select ='UNIQUE SECOND NODE'>
<tr>
<td><xsl:value-of select='col1'/></td>
<td><xsl:value-of select='col2'/></td>
<td><xsl:value-of select='col3'/></td>
</tr>
</xsl:for-each>
</table>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
xslt区分大小写;对于你需要的每一行
<td><xsl:value-of select='col1'/></td>
<td><xsl:value-of select='col2'/></td>
<td><xsl:value-of select='col3'/></td>
你需要使用Muenchian分组来获得每个类似命名的元素<table>
:
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:key name="byTable" match="/Myds/*" use="name()" />
<xsl:template match='/'>
<xsl:for-each select="Myds/*[generate-id() = generate-id(key('byTable', name())[1])]">
<table>
<xsl:comment>for <xsl:value-of select="name()"/></xsl:comment>
<xsl:for-each select ="key('byTable', name())">
<tr>
<td><xsl:value-of select='col1'/></td>
<td><xsl:value-of select='col2'/></td>
<td><xsl:value-of select='col3'/></td>
</tr>
</xsl:for-each>
</table>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>