我在尝试翻译的 HTML 文件时遇到了一些麻烦。基本上,目前的源结构的相关部分是这样的:
<h2 />
<h3 />
<table />
<table />
<h3 />
<table />
<table />
<h3 />
<table />
<h3 />
<h3 />
<table />
<table />
<h2 />
<h3 />
...
等等。这些内容中的每一个都以不同的方式翻译,但我目前遇到的问题是正确地对它们进行分组。本质上,我希望它最终如下所示:
<category>
<h2 />
<container>
<h3 />
<table />
<table />
</container>
<container>
<h3 />
<table />
<table />
</container>
<container>
<h3 />
<table />
</container>
<container>
<h3 />
</container>
<container>
<h3 />
<table />
<table />
</container>
</category>
<category>
<h2 />
<container>
<h3 />
...
为此,我一直在使用以下代码:
<xsl:for-each-group select="node()"group-starting-with="xh:h2">
<category>
<xsl:apply-templates select="xh:h2"/>
<xsl:for-each-group select="current-group()"
group-starting-with="xh:h3">
<container>
<xsl:apply-templates select="current-group()[node()]"/>
</container>
</xsl:for-each-group>
</category>
</xsl:for-each-group>
但是,我从中得到的输出如下:
<category>
<h2 />
<container>
<h3 />
<table />
<table />
<h3 />
<table />
<table />
<h3 />
<table />
<h3 />
<h3 />
<table />
<table />
</container>
</category>
<category>
<h2 />
<container>
<h3 />
...
第一个 for 循环函数按预期工作,但第二个似乎没有。如果我在第二个 for 循环中使用<xsl:copy-of
> 输出 > 中的第一个元素,它会显示> 元素,该元素甚至不应该在组中。<current-group
<h2
如果有人能指出我哪里出错了,或者提供更好的解决方案,将不胜感激。