xsl-list
[Top] [All Lists]

Re: [xsl] deep copy without attributes

2013-05-20 08:20:50
At 2013-05-20 14:12 +0100, Ihe Onwuka wrote:
I have done this

  <xsl:template match="*">
    <pattern id="{@*[1]}">
      <xsl:copy>
        <xsl:apply-templates mode="no-attributes"/>
      </xsl:copy>
    </pattern>
  </xsl:template>

  <xsl:template match="*" mode="no-attributes">
    <xsl:copy>
      <xsl:apply-templates mode="no-attributes"/>
    </xsl:copy>
  </xsl:template>


which seems cumbersome when what I really want to do is

  <xsl:template match="*">
    <pattern id="{@*[1]}">
      <xsl:copy-of select="node() except @*"/>
    </pattern>
  </xsl:template>

idea being to deep copy leaving the attribute nodes behind although
that syntax will not do that.

Correct, because "node()" is an abbreviation for "child::node()" and you cannot find attributes along the child axis.

And because your address is only looking at the child axis, there is no recursing down the depth of the tree. You are asking for a lot of things to be different about the select= address you've written.

I'm not sure why you feel that adding single template rule is cumbersome. And given the way you've written your template rule you can shorten the first template as follows:

  <xsl:template match="*">
    <pattern id="{@*[1]}">
      <xsl:apply-templates select="." mode="no-attributes"/>
    </pattern>
  </xsl:template>

. . . . . . . . Ken

--
Contact us for world-wide XML consulting and instructor-led training |
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm |
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/s/ |
G. Ken Holman                   mailto:gkholman(_at_)CraneSoftwrights(_dot_)com 
|
Google+ profile: https://plus.google.com/116832879756988317389/about |
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal |


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--