XSLT 2.0 - перемещение узла (создается на первом этапе многошагового преобразования) - PullRequest
0 голосов
/ 18 октября 2018

XML и файлы XSLT 2.0 для этого вопроса находятся по адресу https://xsltfiddle.liberty -development.net / 6qVRKwX / 3

Я пытаюсь «переместить» элемент перед выводомраздел HTML.Этот элемент был создан во время первой части преобразования ) с использованием @mode для вставки номеров сносок в текст.В первом режиме fn-add-marker создается <fn-marker/> для хранения номера сноски.Затем второй режим number вставляет увеличенные номера сносок.Все это прекрасно работает (до строки 52 и затем после 68 в скрипте XSLT).

Теперь мне нужно «переместить» элемент в элемент родственного элемента, который породил его в вышеуказанном режиме.Я объединил это с выводом 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>.

Код, который я вставил (ниже), работает для 3 из 4 шагов, необходимых для выполнения этого шага. Кажется, что код, связанный с шагом 3, не находит значение в <fn-marker/>. Но если я удаляю все это, значение фактическиЭто заставляет меня думать, что это проблема режимов.

Код ниже делает это:

  1. выводит каждый экземпляр <tei:seg @type="dep_event>" в <p> работы

  2. создание <sup> внутри <seg>, которое соответствует условию брата работы

  3. скопировать текст () содержимого <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']]]"/>

Заранее спасибо.

...