2016-11-28 77 views
0

我有這樣的XML:如何使用xslt在其節點內創建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> 

任何人可以幫助我了... 我嘗試使用數組創建元素,該元素將被複制但最終導致輸出混淆。

回答

0
<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> 
+0

謝謝你的工作 – divya

+0

請標記爲答案。 –