没有找到一个确切的解决方案,对于这个基本的示例文件,我想打印的只是第一个'Collection'(即A-H)而不是第二个的数据,我该怎么办呢?感谢
<?xml version="1.0" encoding="UTF-8"?>
<Library>
<Collection>
<CD>
<Title>A</Title>
<Artist>B</Artist>
</CD>
<CD>
<Title>C</Title>
<Artist>D</Artist>
</CD>
<CD>
<Title>E</Title>
<Artist>F</Artist>
</CD>
<CD>
<Title>G</Title>
<Artist>H</Artist>
</CD>
</Collection>
<Collection>
<CD>
<Title>I</Title>
<Artist>J</Artist>
</CD>
<CD>
<Title>K</Title>
<Artist>L</Artist>
</CD>
</Collection>
</Library>
答案 0 :(得分:0)
这会将第一个Collection
的内容放在HTML表格中,并忽略其他集合的内容:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="Library">
<table>
<tr><th>Title</th><th>Artist</th></tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<!-- Ignoring all collections -->
<xsl:template match="Collection" />
<!-- Not ignoring the first collection -->
<xsl:template match="Collection[1]">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="CD">
<tr>
<td><xsl:value-of select="Title" /></td>
<td><xsl:value-of select="Artist" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
以下样式表:
<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/Library">
<table>
<tbody>
<tr>
<td>Title</td>
<td>Artist</td>
</tr>
<xsl:apply-templates select="Collection[position() = 1]"/>
</tbody>
</table>
</xsl:template>
<xsl:template match="Library/Collection">
<xsl:for-each select="CD">
<tr>
<td><xsl:value-of select="Title"/></td>
<td><xsl:value-of select="Artist"/></td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
应用于输入XML时,生成:
<?xml version="1.0" encoding="utf-8"?>
<table>
<tbody>
<tr>
<td>Title</td>
<td>Artist</td>
</tr>
<tr>
<td>A</td>
<td>B</td>
</tr>
<tr>
<td>C</td>
<td>D</td>
</tr>
<tr>
<td>E</td>
<td>F</td>
</tr>
<tr>
<td>G</td>
<td>H</td>
</tr>
</tbody>
</table>