0

此问题的 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=pfn-marker= sup

<p>text<sup>incremented no.</sup></p>

IE。在满足条件的情况下,脚注被带入要包含在的兄弟元素中<p>

我插入的代码(如下)适用于完成此移动所需的 4 个步骤中的 3 个。与步骤 3 相关的代码似乎没有在<fn-marker/>. 但如果我删除所有这些,价值实际上就在那里!这让我觉得这是模式的问题。

下面的代码执行此操作:

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

  2. 创建满足兄弟条件的<sup>内部工作<seg>

  3. 将满足兄弟条件 的 text() 内容复制<fn-marker>中不起作用<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']]]"/>

提前致谢。

4

0 回答 0