Переместить весь код XML внутри другого тега XML - PullRequest
0 голосов
/ 13 июня 2019

У меня есть xml-код, и я хочу поместить два xml-тега в начало xml-кода, чтобы весь код попадал под эти два тега

Есть идеи, как этого добиться с помощью XSLT? Я новичок в XSLT и безуспешно пробовал весь день ... Любая помощь будет по достоинству оценена.

У меня есть XML, который выглядит так

<?xml version="1.0" encoding="UTF-8"?>
    <ns0:PCN xmlns:ns0="abc">
    <PCD>
    <PC>
    <TID>123456</TID>
    <Sequence>1</Sequence>
    <Type>M</Type>
    </PC>
    <PC>
    <TID>123457</TID>
    <Sequence>2</Sequence>
    <Type>M</Type>
    </PC>
    </PCD>
    </ns0:PCN>

и мне нужно преобразовать его, чтобы он выглядел так:

<?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="xyz">
    <ns0:Message1>
    <ns0:PCN xmlns:ns0="abc">
    <PCD>
    <PC>
    <TID>123456</TID>
    <Sequence>1</Sequence>
    <Type>M</Type>
    </PC>
    <PC>
    <TID>123457</TID>
    <Sequence>2</Sequence>
    <Type>M</Type>
    </PC>
    </PCD>
    </ns0:PCN>
    </ns0:Message1>
    </ns0:Messages>

Пожалуйста, найдите ниже мой пробный код. Это моя первая попытка, и я написал это после обращения к нескольким кодам xslt. Это не дает мне желаемого результата.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <!-- Identity transform -->
   <xsl:template match="@* | node()">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
   </xsl:template>
   <xsl:template match="ns0:PCN">
      <xsl:copy-of select="."/>
     <ns0:Messages xmlns:ns0="xyz"/>
    <ns0:Message1/>
   </xsl:template>
</xsl:stylesheet>

1 Ответ

0 голосов
/ 13 июня 2019

Как насчет просто:

XSLT 1.0

<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="/">
    <ns0:Messages xmlns:ns0="xyz">
        <ns0:Message1>
            <xsl:copy-of select="*"/>
        </ns0:Message1>
    </ns0:Messages>
</xsl:template>

Демо : https://xsltfiddle.liberty -развитие.нетто / 3NJ38ZK

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