如何使用XSLT在其节点中创建XML的副本



我有这样的XML:

<p>
                  <p1>DISTRIBUTOR</p1>
                  <p2>f</p2>
                  <p3>us</p3>
                  <p4>5</p4>
                  <c>
                     <c1>SOCIAL_MEDIA</c1>
                     <c2>www.facebook.com</c2>
                     <c3>facebook</c3>
                  </c>
                  <c>
                     <c1>EMAIL</c1>
                     <c2>www.gmail.com</c2>
                     <c3>gmail</c3>
                  </c>
               </p>

我希望使用XSLT以以下方式输出,它基本上是创建其部分的副本:

       <p>
          <p1>DISTRIBUTOR</p1>
          <p2>f</p2>
          <p3>us</p3>
          <p4>5</p4>
          <c>
              <p1>DISTRIBUTOR</p1>
             <p2>f</p2>
             <p3>us</p3>
             <p4>5</p4>
             <c1>SOCIAL_MEDIA</c1>
             <c2>www.facebook.com</c2>
             <c3>facebook</c3>
          </c>
          <c>
              <p1>DISTRIBUTOR</p1>
             <p2>f</p2>
             <p3>us</p3>
             <p4>5</p4>
             <c1>EMAIL</c1>
             <c2>www.gmail.com</c2>
             <c3>gmail</c3>
          </c>
       </p>

任何人都可以帮我吗?我尝试使用要复制但最终使输出混淆的元素使用数组创建。

<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="c">    
    <xsl:copy>
        <xsl:copy-of select="/p/node()[starts-with(name(), 'p')]"/>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新