Мой вопрос связан с: XSLT с перекрывающимися элементами? - но предложенное решение не работает для меня.
Ввод
У меня есть TEI- XML, закодированный так:
<delSpan spanTo="#abcbb6b8-b7bd-4b96-93c1-0a34500e12c0"/>
<lg>
<l>some text that is deleted</l>
</lg>
<lg>
<l>much more text</l>
<l>another line of text</l>
</lg>
<anchor xml:id="abcbb6b8-b7bd-4b96-93c1-0a34500e12c0"/>
Я хочу обработать его с помощью XSL и мой вывод должен выглядеть так:
<div class="delSpan">
<div class="lg">
<span>some text that is deleted</span>
</div>
<div class="lg">
<span>much more text</span>
<span>another line of text</span>
</div>
</div>
XSLT В данный момент я пытаюсь работать со следующими шаблонами:
<xsl:template match="tei:delSpan">
<xsl:variable name="id">
<xsl:value-of select="substring-after(@spanTo, '#')"/>
</xsl:variable>
<xsl:for-each-group select="*" group-ending-with="tei:anchor[@xml:id=$id]">
<div class="delSpan">
<xsl:apply-templates />
</div>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="tei:lg">
<div class="lg">
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="tei:l">
<span>
<xsl:apply-templates/>
</span>
</xsl:template>
Но это просто приводит к следующему выводу:
<div class="lg">
<span>some text that is deleted</span>
</div>
<div class="lg">
<span>much more text</span>
<span>another line of text</span>
</div>
Поэтому я спрашиваю себя, есть ли какое-нибудь общее и простое решение для работы с так называемыми веховыми элементами и процессами, как описано выше?