我有这样的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 :(得分: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>