此问题的 XML 和 XSLT 2.0 文件位于https://xsltfiddle.liberty-development.net/6qVRKwX/3
我试图在输出一段 HTML 之前“移动”一个元素。此元素是在转换的第一部分创建的) @mode
用于在文本中插入脚注编号。第一种模式fn-add-marker
创建<fn-marker/>
以保存脚注编号。第二种模式number
然后插入递增的脚注编号。所有这些都可以正常工作(一直到第 52 行,然后在 XSLT 小提琴中的第 68 行之后)。
现在我需要将一个元素“移动”到以上述模式生成它的兄弟元素中。我将它与 HTML 输出结合起来:最终的想法是元素<tei:seg>
被转换为 HTML <p>
,这样:
<seg type="dep_event">text</seg><fn-marker>incremented no.</fn-marker>
现在变成了这个 HTML(其中seg
=p
和fn-marker
= sup
:
<p>text<sup>incremented no.</sup></p>
IE。在满足条件的情况下,脚注被带入要包含在的兄弟元素中<p>
。
我插入的代码(如下)适用于完成此移动所需的 4 个步骤中的 3 个。与步骤 3 相关的代码似乎没有在<fn-marker/>
. 但如果我删除所有这些,价值实际上就在那里!这让我觉得这是模式的问题。
下面的代码执行此操作:
将每个实例输出
<tei:seg @type="dep_event>"
到一个<p>
作品中创建满足兄弟条件的
<sup>
内部工作<seg>
将满足兄弟条件 的 text() 内容复制
<fn-marker>
到中不起作用<sup>
销毁旧
<fn-marker>1</fn-marker>
作品
参考https://xsltfiddle.liberty-development.net/6qVRKwX/3的行号:
第 56-63 行:
<xsl:template match="tei:seg[@type='dep_event']">
<p>
<xsl:apply-templates/>
<xsl:if test="following-sibling::node()[1][self::tei:fn-marker]">
<!-- next line of code does not find a value in /text() -->
<sup><xsl:value-of select="./following-sibling::node()[1][self::tei:fn-marker/]text()"/></sup>
</xsl:if>
</p>
</xsl:template>
第 66 行:
<xsl:template match="tei:fn-marker[preceding-sibling::node()[1][self::tei:seg[@type='dep_event']]]"/>
提前致谢。