【发布时间】:2009-11-10 18:34:09
【问题描述】:
我正在使用 XSLT 将一个非常大的 XML 文档转换为 (X)HTML。对于某些标签,我将它们转换为<div>。我希望能够为这些标签创建一个唯一 ID,使用递增的整数来形成唯一 ID 的一部分。
我使用的规则的一个例子是:
<xsl:template match="bookcoll/book">
<div class="book">
<xsl:apply-templates/>
</div>
</xsl:template>
这个 XSLT 模板运行良好。我现在想要的是标签:
<div class="book">;
成为:
<div class="book" id="book-[COUNTER-VALUE]">
理想情况下,计数器从 1 开始,而不是 0。
我不知道这是否有很大不同,我正在使用 Java 包 javax.xml.parsers 和 javax.xml.transform 来执行实际的转换。我有点 XSLT 菜鸟,所以如果我遗漏了任何相关信息,请告诉我。
如何在 XSLT 中实现这一点?
【问题讨论】:
-
代码缩进 4 个空格,如下所示:stackoverflow.com/editing-help
-
啊,好多了。我试图用 pre 和 code 标签来做这件事,奇怪的事情正在发生。谢谢!
-
@Grundlefleck:您的 XSLT 的(大量)修改和注释版本可在 pastebin.com/m63e66eea 获得。我希望我设法做对了,如果没有,更改应该很容易进行。玩得开心。 :-)
-
哦,另一个版本 2 在这里:pastebin.com/f77f6a871。替代方案(可能)更好,因为如果您忘记为某个标签编写模板(显式优于隐式),它不会导致输出中出现不需要的元素。
-
里面有一些有趣的和新的(对我来说)东西供我学习。非常感谢,托马拉克! :-)