2016-11-28 3 views
0

я есть код:Как создать копии xml в своем узле с помощью xslt?

<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

Пожалуйста, отметьте это как ответ. –