Вы не можете обновить значение параметра или переменной после того, как оно было изначально установлено.Однако вы можете создать новую переменную и установить ее в соответствии с тем, был ли установлен исходный параметр $ type или нет.
Попробуйте что-нибудь подобное.Это создаст новую переменную $ newtype, которую вы затем сможете использовать в своем шаблоне.Если $ type установлен, то $ newtype будет равен $ type, в противном случае он будет смотреть на элементы Url_params / has_car
<xsl:template name="trip_form">
<xsl:param name="type"/>
<xsl:param name="size"/>
<xsl:param name="header"/>
<xsl:variable name="newtype">
<xsl:choose>
<!-- Check if type is defined -->
<xsl:when test="$type = ''">
<!-- Determine if a driver or passenger -->
<xsl:choose>
<xsl:when test="/root/meta/url_params/has_car = 1">
<xsl:value-of select="'driver'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'passenger'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<!-- Use value of parameter -->
<xsl:value-of select="$type"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Use the new variable $newtype here -->
<xsl:value-of select="$newtype"/>
</xsl:template>