I would like to set the fill opacity of all paths whose id starts with *Invisible* to 0.0, below the SVG.

**Original SVG (extract)**

```
<g id="Section-svg">

<path d="M150 0 L75 200 L225 200 Z" stroke="rgb(100, 100, 100)" style="fill: rgb(100, 100, 100); stroke-width: 0.3; stroke-linejoin: round; stroke-linecap: round; stroke rgb(100, 100, 100);"/>

<g id="symbols-svg">
<g id="Invisible2-svg" transform="translate(250, 90)" >
<path d="M-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0Z" stroke="rgb(200, 200, 200)" id="Invisible2" style="fill: rgb(0, 15, 60); stroke-width: 1; fill-opacity: 0.9; stroke-opacity: 0.5; stroke-linejoin: miter; stroke-linecap: butt; stroke: rgb(0, 50, 100);" />
</g>

<g id="Invisible3-svg" transform="translate(250, 90)" >
<path d="M-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0Z" stroke="rgb(200, 200, 200)" id="Invisible3" style="fill: rgb(0, 15, 60); stroke-width: 1; fill-opacity: 0.9; stroke-opacity: 0.5; stroke-linejoin: miter; stroke-linecap: butt; stroke: rgb(0, 50, 100);" />
</g>

</g>
</g>

```

Here is the XSL I used , I tried editing what I could find at [How to modify a SVG attribute using XSLT](https://stackoverflow.com/questions/56733293/how-to-modify-a-svg-attribute-using-xslt)

**XSL for the relative task**

```
 <xsl:template match="svg:*[@id[starts-with(., 'Invisible')]]">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:attribute name="fill-opacity">0.0</xsl:attribute> 
            <xsl:apply-templates select="node()"/>
        </xsl:copy>
    </xsl:copy>
  </xsl:template> 

```

Yet I only get the wanted paths duplicated, and with *fill-opacity* not as a style but as something that does not have real effect on the path.

**Resulting (wrong) SVG**

```
<g id="Section-svg">

<path d="M150 0 L75 200 L225 200 Z" stroke="rgb(100, 100, 100)" style="fill: rgb(100, 100, 100); stroke-width: 0.3; stroke-linejoin: round; stroke-linecap: round; stroke rgb(100, 100, 100);"/>

<g id="symbols-svg">
<g id="Invisible2-svg" transform="translate(250, 90)" >
<path d="M-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0Z" stroke="rgb(200, 200, 200)" id="Invisible2" style="fill: rgb(0, 15, 60); stroke-width: 1; fill-opacity: 0.9; stroke-opacity: 0.5; stroke-linejoin: miter; stroke-linecap: butt; stroke: rgb(0, 50, 100);" fill-opacity="0.0;" />
</g>

<g id="Invisible3-svg" transform="translate(250, 90)" >
<path d="M-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0Z" stroke="rgb(200, 200, 200)" id="Invisible3" style="fill: rgb(0, 15, 60); stroke-width: 1; fill-opacity: 0.9; stroke-opacity: 0.5; stroke-linejoin: miter; stroke-linecap: butt; stroke: rgb(0, 50, 100);" fill-opacity="0.0;" />
</g>
</g>
</g>

```

**Wanted result SVG**

```
<g id="Section-svg">

<path d="M150 0 L75 200 L225 200 Z" stroke="rgb(100, 100, 100)" style="fill: rgb(100, 100, 100); stroke-width: 0.3; stroke-linejoin: round; stroke-linecap: round; stroke rgb(100, 100, 100);"/>
<g id="symbols-svg">

<g id="Invisible2-svg" transform="translate(250, 90)" >
<path d="M-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0Z" stroke="rgb(200, 200, 200)" id="Invisible2" style="fill: rgb(0, 15, 60); stroke-width: 1; fill-opacity: 0.0; stroke-opacity: 0.5; stroke-linejoin: miter; stroke-linecap: butt; stroke: rgb(0, 50, 100);" />
</g>

<g id="Invisible3-svg" transform="translate(250, 90)" >
<path d="M-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0Z" stroke="rgb(200, 200, 200)" id="Invisible3" style="fill: rgb(0, 15, 60); stroke-width: 1; fill-opacity: 0.0; stroke-opacity: 0.5; stroke-linejoin: miter; stroke-linecap: butt; stroke: rgb(0, 50, 100);" />
</g>
</g>
</g>

```

I also tried matching the path and giving it the style I would like it to have

**XSL**

```
 <xsl:template match="svg:path[@id[starts-with(., 'Invisible')]]">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
<path style="fill: rgb(0, 15, 60); stroke-width: 0.1; fill-opacity: 0.0; stroke-opacity: 0.0; stroke-linejoin: miter; stroke-linecap: butt; stroke: rgb(0, 50, 100);">
            <xsl:apply-templates select="node()"/>
        </xsl:copy>
    </xsl:copy>
  </xsl:template> 

```

but both NotePad++ and VBA said the resulting XSL is not well formed.

Nor did this work

**XSL**

```
 <xsl:template match="svg:*[@id[starts-with(., 'Invisible')]]">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:attribute style="fill-opacity">0.0</xsl:attribute> 
            <xsl:apply-templates select="node()"/>
        </xsl:copy>
    </xsl:copy>
  </xsl:template> 

```

Could someone please advise?