在XSLT样式表中,我定义了以下模板:
<xsl:template match="*[@xlink:type = 'simple' and @xlink:href]">
<a href="{@xlink:href}">
<xsl:apply-templates/>
</a>
</xsl:template>
<xsl:template match="//mets:mets/mets:fileSec/mets:fileGrp/mets:file/mets:FLocat">
<a href="{@xlink:href}">
<xsl:value-of select="@xlink:href"/>
</a>
</xsl:template>
在XML文件中的部分&#34; mets:mets / mets:fileSec / mets:fileGrp / mets:file / mets:FLocat&#34;嵌套在&#34; mets:mets / mets:fileSec / mets:fileGrp / mets:file&#34;并且发生了好几次。
仅尝试2个部分&#34; mets:file&#34;我使用以下代码来应用模板:
<tr bgcolor="#ff0000">
<td>Filename</td>
<td><xsl:apply-templates select="//mets:mets/mets:fileSec/mets:fileGrp/mets:file/mets:FLocat" /></td>
</tr>
这应该呈现如下的HTML表示:
Data on file 1
.
.
.
Filename file:///location/of/file1
Data on file 2
.
.
.
Filename file:///location/of/file2
但是会发生什么:
Data on file 1
.
.
.
Filename file:///location/of/file1file:///location/of/file2
Data on file 2
.
.
.
Filename file:///location/of/file1file:///location/of/file2
我在这里做错了什么?
/保
答案 0 :(得分:0)
我找到了解决方案。但是我不明白为什么?
上面的代码......
<tr bgcolor="#ff0000">
<td>Filename</td>
<td><xsl:apply-templates select="//mets:mets/mets:fileSec/mets:fileGrp/mets:file/mets:FLocat" /></td>
</tr>
....改为....
<tr bgcolor="#ff0000">
<td>Filename</td>
<td><xsl:apply-templates select="." /></td>
</tr>
然后我得到了所需的输出。
模板是否可以从这段代码中获取所需的所有信息?
<xsl:template match="*[@xlink:type = 'simple' and @xlink:href]">
<a href="{@xlink:href}">
<xsl:apply-templates/>
</a>
</xsl:template>
/保