XSLT 2.0移动节点(在多步转换的第一步中创建)

时间:2018-10-18 13:10:28

标签: xslt xslt-2.0 tei

此问题的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/>中定位值。但是,如果我删除所有这些内容,则实际上价值就在那里!这让我觉得这是模式的问题。

下面的代码执行此操作:

  1. <tei:seg @type="dep_event>"的每个实例输出到<p>中的作品

  2. <sup>内创建符合同级条件的<seg>有效

  3. <fn-marker>的text()内容复制到满足同级条件的<sup>不起作用

  4. 摧毁旧的<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']]]"/>

谢谢。

0 个答案:

没有答案