Как скопировать все дочерние узлы из родительского узла, используя XSL - PullRequest
0 голосов
/ 04 марта 2019

ниже мой ввод:

<csv>
<row>
    <stuff>a</stuff>
    <more>1</more>
    <evenmore>123</evenmore>
    <roww>
        <other>1345</other>
       <other>13845</other>
    </roww>
</row>
</csv>

Ожидаемый выход:

 <roww>
        <other>1345</other>
       <other>13845</other>
    </roww>

Может кто-нибудь дать мне знать, как это сделать с XSL?

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Вы можете использовать визуальный инструмент преобразования дерева TreeOps для достижения этой цели.TreeOps (https://github.com/treeops/treeops):

  1. Загрузить XML

  2. добавить преобразование - Переместить вверх "строка / roww / прочее"

  3. добавить преобразование - переместить «ряд / другое»

  4. добавить преобразование - удалить «ряд»

Вводи результат Преобразования

0 голосов
/ 05 марта 2019

Ну, это просто для соответствия родительскому узлу и выполнения copy-of.

Элемент <xsl:copy-of> создает копию текущего узла.

Примечание: Узлы пространства имен, дочерние узлы и атрибуты текущего узла также автоматически копируются!

Решение XSLT 1.0 для достижения ожидаемого результата может быть:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes" />

<xsl:template match="/csv">
    <xsl:copy-of select="row/roww" />
</xsl:template>

</xsl:stylesheet>

https://xsltfiddle.liberty -development.net / bFN1y93

...