This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: How to copy all child elements except specific one?


> Oh, so all you need is this:
> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>                 version="1.0"
>                 >
> 
> <xsl:template match="*|/">
> <xsl:copy>
> <xsl:copy-of select="@*"/>
> <xsl:apply-templates/>
> </xsl:copy>
> </xsl:template>
> 
> <xsl:template match="ChildElementToChange">
> <xsl:copy>
> <NewElement>
>  <xsl:copy-of select="../@L3Attr|@*"/>
> <xsl:apply-templates/>
> </NewElement>
> </xsl:copy>
> </xsl:template>
> 
> </xsl:stylesheet>
> 
> David

First off, thanks so much for your help, David. I'm learning a whole lot
through this process.

I accidently left off one additional tweak, so the above is almost what I
need. Here's my latest, thanks to your xsl diet plan in your previous post
<g>:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="Level3">
  <Level3>
    <xsl:copy-of select="@*[not(attribute::L3Attr)]" />  <!-- *this line not
working* -->
    <xsl:copy-of select="*[not(self::ChildElementToChange)]" />
    <xsl:apply-templates select="ChildElementToChange" />
  </Level3>
</xsl:template>

<xsl:template match="ChildElementToChange">
  <ChildElementToChange>
    <NewElement>
      <xsl:attribute name="L3AttrRenamed"><xsl:value-of select="../@L3Attr"
/></xsl:attribute>
      <xsl:copy-of select="@OldValue|@NewValue" />
    </NewElement>
  </ChildElementToChange>
</xsl:template>

</xsl:stylesheet>

Changes:
- I need to remove the L3Attr attribute from the Level3 element
- I need to rename the L3Attr when it's moved into NewElement

What's Not Working:
- removing the L3Attr attribute. How can I get this to work?

BTW, why does your identity transform look different from mine (which I
believe is the w3 spec)?

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]