Используя XSLT 1.0, мне нужно сгруппировать каждый узел между командами обработки <?start?>
и <?end?>
. Узлы вне этой пары на выходе должны быть неизменными.Группирование узлов XML между двумя командами обработки с использованием XSLT 1.0
Во-первых, мне нужно найти способ выбора только узлов, которые находятся между каждой стартовой парой. Предположим, у нас есть пример ввода XML:
<root>
abc
<?start?>
def<Highlighted bold="yes">
<Highlighted italic="yes">ghi</Highlighted>
</Highlighted>jkl
<?pi?>
<table>
<Caption>stu</Caption>
</table>vw
<?end?>
xy
<?start?>
abc <Caption>def</Caption> ghi
<?end?>
jkl
</root>
Кроме того, мне нужно иметь узлы за пределами «старт - конец» пересечений на выходе, а также. Это означает, что на выходе: а) узлы на пересечении начального ПИ будут в элементе группы; б) любой узел вне пересечения будет напечатан без изменений. Обратите внимание, что входной документ также не может иметь пару команд обработки начального конца.
Например, от данного входа, выход должен быть следующим:
<root>
abc
<group>
def<Highlighted bold="yes">
<Highlighted italic="yes">ghi</Highlighted>
</Highlighted>jkl
<?pi?>
<table>
<Caption>stu</Caption>
</table>vw
</group>
xy
<group>
abc <Caption>def</Caption> ghi
</group>
jkl
<root>
Часть этого вопроса уже отвечал Finding all XML nodes between each two processing instructions. Но я борюсь с печатью узлов за пределами элемента группы без дублирования любого узла.
прохладный решение. Мне это нравится. –