xsl-list
[Top] [All Lists]

Re: Copying an entire NodeSet with modified selected attribute values

2005-06-23 08:50:04
2005/6/23, michella(_at_)post(_dot_)ch <michella(_at_)post(_dot_)ch>:
Hi all,

A need a little help :

Given SVG:

<svg width="100%" height="100%" viewBox="-24 -21 1296 1135"
preserveAspectRatio="xMinYMin meet" kerning="0" xml:space="preserve"
xmlns:xlink="http://www.w3.org/1999/xlink"; style="stroke: black; fill:
none;">
       <g id="122" type="443" node="Yes">
       ...
       </g>
</svg>

I would like to keep/copy the entire SVG Structure, but just change
specific attribute values.

Example :clone it, except that : (...) height="NEWVALUE" (...)

Could it be possible to simple use xsl:copy-of function with exceptions
(IFs)?


I would suggest the following steps

1. Copy the element node
2. Copy all attributes
3. Replace existing attributes or add new ones
4. Copy child nodes or apply templates to child nodes

<xsl:template match="svg">
    <!--  copy element node svg  -->
    <xsl:copy>

        <!--  copy all attributes -->
        <xsl:copy-of select="@*"/>

        <!--  xsl:attribute will replace any attribute copied by above
instruction -->
        <xsl:attribute name="height"><!--  new value --></xsl:attribute>
        ...
        <!--  copy child nodes ... -->
        <xsl:copy-of select="node()"/>

        <!--  ... or apply templates to child nodes  -->
        <xsl:apply-templates/>

    </xsl:copy>
</xsl:template>

Note, however, that you cannot remove attributes this way,
only replace existing ones or add new ones.

If you want to remove attributes, you have to filter the attribute
select expression like

<xsl:copy-of select="@*[not(name()='height') and not(...)...]"/>

Regards - Klaus

Thanks for your replies ;-)

Lawrence Michel

--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--



<Prev in Thread] Current Thread [Next in Thread>