【问题标题】:how create copies of xml within its node using xslt?如何使用 xslt 在其节点内创建 xml 副本?
【发布时间】:2016-11-28 12:02:59
【问题描述】:

我有这样的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>

谁能帮帮我.... 我尝试为要复制的元素使用数组创建,但最终混淆了输出。

【问题讨论】:

    标签: xml xslt xslt-1.0 xslt-2.0


    【解决方案1】:
    <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>
    

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多