此问题的XML和XSLT 2.0文件位于https://xsltfiddle.liberty-development.net/6qVRKwX/3
我正在尝试在输出HTML部分之前“移动”一个元素。该元素是在the first part of the transformation期间使用@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>
即。在满足条件的情况下,将脚注置于要包含在<p>
中的同级元素内。
我插入的代码(下面)适用于4个步骤中的3个,以完成此步骤。似乎与步骤3相关的代码未在<fn-marker/>
中定位值。但是,如果我删除所有这些内容,则实际上价值就在那里!这让我觉得这是模式的问题。
下面的代码执行此操作:
将<tei:seg @type="dep_event>"
的每个实例输出到<p>
中的作品
在<sup>
内创建符合同级条件的<seg>
,有效
将<fn-marker>
的text()内容复制到满足同级条件的<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']]]"/>
谢谢。