В моем XML-документе у меня есть вехи в тексте, закодированные с помощью самозакрывающегося элемента <milestone n="1"/>
.Таким образом, текст выглядит так:
<p>
<seg><milestone n="1"/>Lorem ipsum dolor sit amet, consectetur adipiscing
elit, sed do eiusmod tempor incididunt <milestone n="2"/>ut labore
et dolore magna aliqua. Ut <quote>enim <note>ad</note></quote> minim <milestone n="3"/>veniam,
quis nostrud exercitation <milestone n="4"/>ullamco laboris nisi
ut aliquip ex ea commodo</seg>
<seg>consequat. Duis aute irure dolor
<milestone n="5"/> in reprehenderit <quote>in</quote> voluptate velit esse cillum
dolore eu fugiat nulla pariatur.</seg>
</p>
В XSLT 2.0 я пытаюсь ориентироваться на вывод HTML, где все содержимое между <milestone/>
помещается в элемент li
HTML, игнорируя <seg>
структура, но допускающая дальнейшую обработку по другим узлам:
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt</li>
<li>ut labore et dolore magna aliqua. Ut enim ad minim</li>
<li>veniam, quis nostrud exercitation</li>
<li>ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor</li>
<li>in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</li>
Пример (ниже на основе this и this ) не функционировал ...
<xsl:template match="p" mode="diplo">
<xsl:for-each-group select="node()" group-starting-with="milestone">
<li>
<xsl:sequence select="current()/ancestor::p//milestone/@*"/>
<xsl:apply-templates select="current-group()[not(self::milestone)]"/>
</li>
</xsl:for-each-group>
</xsl:template>
РЕДАКТИРОВАТЬ: я обновил источник XML, чтобы сделать его более понятным (я не хочу только текст, но все узлы для дальнейшей обработки с применением шаблонов), и опубликовал неудачную попытку.
Заранее спасибо.