[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Copy Attribute Unless


Subject: Re: [xsl] Copy Attribute Unless
From: Alan <alan-xsl-list@xxxxxxxxx>
Date: Fri, 25 Mar 2005 12:40:12 -0500

* Alan <alan-xsl-list@xxxxxxxxx> [2005-03-25 12:27]:
>     In my expand.xslt I have a template like so...
> 
>     <xsl:template match="control">
>       <xsl:variable name="definition"
>                     select="ancestor::bench/fixture/control-point[
>                                           @name = current()/@name]"/>
>       <xsl:copy>
>         <xsl:copy-of select="@*"/>
>         <xsl:if test="not(@trim)">
>           <xsl:copy-of select="$defition/@trim"/>
>         </xsl:if>
>         <xsl:if test="not(@class)">
>           <xsl:copy-of select="$defition/@class"/>
>         </xsl:if>
>         <!--| Repeat for every attribute I add. |-->
>       </xsl:copy>
> 
>     </xsl:template>

>     My question... Is there a clever select statement that could
>     "copy all the attributes, and all the definition attributes,
>     unless they are already definied in the test instance."

    The following works in Saxon 8.0. I assumed it was bad news to
    specify an attribute twice, but I suppose the last attribute
    node copied wins.

    <xsl:template match="control">
      <xsl:variable name="definition"
                    select="ancestor::bench/fixture/control-point[
                                          @name = current()/@name]"/>
      <xsl:copy>
        <xsl:copy-of select="$definition/@*"/>
        <xsl:copy-of select="@*"/>
      </xsl:copy>

    </xsl:template>



--
Alan Gutierrez - alan@xxxxxxxxx


Current Thread