使用XSLT1.0进行百分比编码

使用XSLT1.0进行百分比编码,xslt,xslt-1.0,Xslt,Xslt 1.0,我使用的是XSLT1.0,不应该使用XSLT2.0。 我有以下xml,其中的值有一些特殊字符 <?xml version="1.0" encoding="UTF-8"?> <root> <prvNum>SPECIAL#1&amp;</prvNum> </root> 我正在尝试以下代码片段,但样式表没有编译 <?xml version="1.0" encoding="UTF-8"?> <xsl:styl

我使用的是XSLT1.0,不应该使用XSLT2.0。 我有以下xml,其中
的值有一些特殊字符

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <prvNum>SPECIAL#1&amp;</prvNum>
</root>
我正在尝试以下代码片段,但样式表没有编译

 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:custom="http://youdomain.ext/custom" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.0">
   <msxsl:script language="JScript" implements-prefix="custom">function uriencode(string) {
 return encodeURIComponent(string);
}</msxsl:script>
   <!-- identity template -->
   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()" />
      </xsl:copy>
   </xsl:template>
   <xsl:template match="prvNum">
      <prvNum>
         <xsl:copy-of select="@*" />
         <xsl:value-of select="custom:uriencode(text())" />
      </prvNum>
   </xsl:template>
</xsl:stylesheet>

函数uriencode(字符串){
返回组件(字符串);
}

有人能帮我解决这个问题吗?

我想您需要先将
自定义:
前缀绑定到名称空间,然后才能使用它。@michael.hor257k,谢谢您的回复。我遇到错误
无法使用提供的XML/XSL输入生成XML文档。找不到名为的匹配单参数函数{http://youdomain.ext/custom}在绑定了
自定义前缀后,使用uriencode()
。你能帮我找出解决方案吗?你实际上使用的是MSXSL处理器吗?@michael.hor257k,老实说,我不确定我使用的是哪个处理器。我们在项目中使用java和Spring集成。如何知道我使用的是哪个处理器?上面的代码只能在Microsoft的MSXSL中使用:请参阅此处如何查找您拥有的处理器:
 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:custom="http://youdomain.ext/custom" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.0">
   <msxsl:script language="JScript" implements-prefix="custom">function uriencode(string) {
 return encodeURIComponent(string);
}</msxsl:script>
   <!-- identity template -->
   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()" />
      </xsl:copy>
   </xsl:template>
   <xsl:template match="prvNum">
      <prvNum>
         <xsl:copy-of select="@*" />
         <xsl:value-of select="custom:uriencode(text())" />
      </prvNum>
   </xsl:template>
</xsl:stylesheet>