在使用XSLT转换XSLT时保留实体引用

mar*_*tre 2 xml xslt xslt-2.0

我想用XSLT转换一些XSLT文件来获取新的XSLT文件,这实际上工作得很好.只有一个功能提供问题:如果我复制/甚至我尝试手动构建此功能

   <xsl:function name="mr:get_xmlname">
    <xsl:param name="name"/>

    <xsl:value-of 
        select="replace($name,'[^A-Z|_|a-z|&#xC0;-&#xD6;|&#xD8;-&#xF6;|&#xF8;-&#x2FF;|&#x370;-&#x37D;|&#x37F;-&#x1FFF;|&#x200C;-&#x200D;|&#x2070;-&#x218F;|&#x2C00;-&#x2FEF;|&#x3001;-&#xD7FF;|&#xF900;-&#xFDCF;|&#xFDF0;-&#xFFFD;|&#x10000;-&#xEFFFF;|\-|\.|0-9|&#xB7;|&#x0300;-&#x036F;|&#x203F;-&#x2040;]','_')"
    />
</xsl:function>
Run Code Online (Sandbox Code Playgroud)

我总是最终得到

    <xsl:function name="mr:get_xmlname">
    <xsl:param name="name"/>
    <xsl:value-of
        select="replace($name,'[^A-Z|_|a-z|À-Ö|Ø-ö|ø-?|?-?|?-?|?-?|?-?|?-?|?-?|?-?|?-?|-|\-|\.|0-9|·|?-?|?-?]','_')"
    />
</xsl:function>
Run Code Online (Sandbox Code Playgroud)

但实际上我希望它保持原样.我已经使用disable-output-escaping尝试了一些东西,但它似乎没有影响,就像它是一个属性而没有文本节点.

如果您对我如何"手动"构建语句有一些想法,那对我来说也是一个有效的解决方案.

非常感谢提前

martre

Mic*_*Kay 5

尝试<xsl:output encoding="us-ascii"/>,它将强制所有非ASCII字符使用十六进制或十进制字符引用进行序列化,无论它们是否以这种方式开始.