INPUT: edges.xml
<edges>
  <edge id="-100396051#2" type="highway.unclassified">
        <lane id="-100396051#2_0" index="0"  speed="13.89">
            <param key="origId" value="100396051"/>
        </lane>
    </edge>
    <edge id="-101784374#0" type="highway.secondary">
        <lane id="-101784374#0_0" index="0"  speed="27.78" length="17.22" >
            <param key="origId" value="101784374"/>
        </lane>
        <lane id="-101784374#0_1" index="1" speed="29.98" length="17.22" >
            <param key="origId" value="101784374"/>
        </lane>
    </edge>
</edges>
STYLESHEET: change_speed.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
</xsl:template>
<xsl:template match="@speed[../parent::edge and ../../@type='highway.secondary']">
    <xsl:attribute name="speed">
      <xsl:value-of select="'40'"/>
    </xsl:attribute>
</xsl:template>
</xsl:stylesheet>
OUTPUT:
$ xsltproc change_speed.xsl edges.xml 
<?xml version="1.0" encoding="utf-8"?>
<edges>
  <edge id="-100396051#2" type="highway.unclassified">
        <lane id="-100396051#2_0" index="0" speed="13.89">
            <param key="origId" value="100396051"/>
        </lane>
    </edge>
    <edge id="-101784374#0" type="highway.secondary">
        <lane id="-101784374#0_0" index="0" speed="40" length="17.22">
            <param key="origId" value="101784374"/>
        </lane>
        <lane id="-101784374#0_1" index="1" speed="40" length="17.22">
            <param key="origId" value="101784374"/>
        </lane>
    </edge>
</edges>
Explanations:
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
</xsl:template>
Will copy all the nodes and attributes recursively 
<xsl:template match="@speed[../parent::edge and ../../@type='highway.secondary']">
    <xsl:attribute name="speed">
      <xsl:value-of select="'40'"/>
    </xsl:attribute>
</xsl:template>
When you reach an attribute named speed for which the parent node is named edge and has an attribute type whose value is at highway.secondary, change the value of this attribute to 40.