cómo convertir xslt versión 2.0 a la versión 1.0

Estoy usando el documento xslt que usa las funciones de la versión 2 de xpath. Solo tengo el tarro xalan 2.6 que tiene el procesador xslt 1.0, es una restricción que no puedo cambiarlo. Por favor, ayúdeme si hay alguna herramienta que convierta las funciones de xpath 2.0 a 1.0.

<xsl:variable name="var1_ClinicalDocument" as="node()?" select="ns0:ClinicalDocument"/>
        <DSMessage>
            <DSPatient>
                <xsl:for-each 

    select="$var1_ClinicalDocument[fn:exists(ns0:id/@root)]">
                        <Source>
                            <xsl:sequence select="fn:string(ns0:id/@root)"/>
                        </Source>
                    </xsl:for-each>
                    <Demographics>
                        <xsl:for-each select="($var1_ClinicalDocument/ns0:recordTarget/ns0:patientRole/ns0:id)[fn:exists(@extension)]">
                            <externalID>
                                <xsl:sequence select="fn:string(@extension)"/>
                            </externalID>
                        </xsl:for-each>
                        <xsl:for-each select="($var1_ClinicalDocument/ns0:recordTarget/ns0:patientRole/ns0:patient/ns0:name/ns0:given/node())[fn:boolean(self::text())]">
                            <firstName>
                                <xsl:sequence select="fn:string(.)"/>
                            </firstName>

Respuestas a la pregunta(3)

Su respuesta a la pregunta