¿XML de salida XSL sin prefijo sin usar el espacio de nombres predeterminado?

Tengo un XSL donde necesito generar resultados a lo largo de las líneas de esto:

<moo xmlns="http://api.example.com">
    <foo>1358944586848</foo>
    <bar>
        <a>1</a>
        <b>2</b>
        <c>3</c>
    </bar>
</moo>

Yo podría hacerlo así:

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://api.example.com">

    <xsl:template match="/">
        <xsl:element name="moo">
            <!-- and so on -->

Sin embargo, odio usar el prefijo xsl en mis archivos xsl porque siento que lo desordena mucho. La selección con XPath es fácil de todos modos ya que puede configurarxpath-default-namespace a lo que sea que estés transformando si es necesario. Pero no hayelement-default-namespace disponible hasta donde puedo ver, entonces, ¿cómo puedo generar la salida deseada de una buena manera?

Sé que puedo hacerlo:

<stylesheet version="2.0"
    xmlns="http://www.w3.org/1999/XSL/Transform">

    <template match="/">
        <element name="moo" namespace="http://api.example.com">
            <!-- and so on -->

Pero luego tengo que establecer este espacio de nombres explícitamente en cada elemento que creo, o terminarán con el espacio de nombres XSL. Entonces, ¿hay una manera limpia de crear elementos con un cierto espacio de nombres (sin un prefijo) y no tocar el espacio de nombres predeterminado del archivo xsl?

Actualizar:

Figurado tal veznamespace-alias podría hacer algo, pero no puede averiguar cómo usarlo. Intenté esto, pero no parece hacer ninguna diferencia en la salida en absoluto:

<stylesheet version="2.0"
    xmlns="http://www.w3.org/1999/XSL/Transform"
xmlns:out="http://api.example.com">

<namespace-alias stylesheet-prefix="out" result-prefix=""/>

    <template match="/">
        <element name="out:moo">
            <!-- and so on -->

losnamespace-alias cosa probablemente no está haciendo lo que creo que es: p

La solución final que utilicé, basada en la respuesta de JLRishe.

remove-prefixes.xsl

<?xml version="1.0" encoding="UTF-8"?>
<stylesheet version="2.0" xmlns="http://www.w3.org/1999/XSL/Transform">
    <template match="/">
        <variable name="result">
            <next-match />
        </variable>
        <apply-templates select="$result" mode="remove-prefixes" />
    </template>

    <template match="*" priority="1" mode="remove-prefixes">
        <element name="{local-name()}" namespace="{namespace-uri()}">
            <apply-templates select="@* | node()" mode="remove-prefixes" />
        </element>
    </template>
    <template match="@*|node()" mode="remove-prefixes">
        <copy>
            <apply-templates select="@* | node()" mode="remove-prefixes" />
        </copy>
    </template>

</stylesheet>

subject.xsl

<!-- snip -->
<import href="remove-prefixes.xsl" />
<!-- snip -->

Respuestas a la pregunta(3)

Su respuesta a la pregunta