Добавьте родительский элемент к другому брату XML с помощью XSLT - PullRequest
0 голосов
/ 22 апреля 2020

У меня вопрос по XSLT 2.0. Я нахожусь в такой ситуации:

<config>
    <!-- elements that needs to be copied as they are -->
    <a>
        <childA attr="attr">text</childA>
    </a>
    <b>
        <childB attrb="attr">text B</childB>
    </b>
    <c>
        <childC attrc="attr">text</childC>
    </c>
</config>

, и я хотел бы иметь это:

<config>
    <!-- elements that needs to be copied as they are -->
    <parent>
        <a>
            <childA attr="attr">text</childA>
        </a>
        <b>
            <childB attrb="attr">text B</childB>
        </b>
        <C>
            <childC attrc="attr">text</childC>
        </c>
    </parent>
</config>

Я сделал много попыток, но все они были в основном неправильно, я также пытался использовать для каждой группы, но определенно я не думаю, что это так ... Можете ли вы дать мне подсказку о том, как / где искать?

Большое вам спасибо!

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Почему ты не можешь просто сделать:

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

<xsl:template match="config">
    <xsl:copy>
        <parent>
            <xsl:copy-of select="*"/>
        </parent>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>
1 голос
/ 22 апреля 2020

Напишите шаблон для config

<xsl:template match="config">
  <xsl:copy>
     <xsl:apply-templates select="* except (a, b, c)"/>
     <parent>
       <xsl:apply-templates select="a, b, c"/>
     </parent>
  </xsl:copy>
</xsl:template>

вместе с преобразованием идентичности в качестве начальной точки (т. Е. <xsl:mode on-no-match="shallow-copy"/> или то же самое, что указано в качестве шаблона).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...