我需要更改由MOSS07自动创建的链接,其中包含空格以包含%20。
示例:
{$SafeLinkURL}
将输出https://stackoverflow.com/example个空格
https://stackoverflow.com/example%20of%20spaces
如果有人能对此有所了解,请做。
提前致谢,
尼克
答案 0 :(得分:2)
Dimitrie提到的XSLT 2.0功能是:
fn:encode-for-uri()
fn:iri-to-uri()
fn:escape-html-uri()
有关详细规范和示例,请参阅链接。在您的情况下(如果您可以使用XSLT 2.0处理器),fn:iri-to-uri()
将解决您的问题。
但这些功能都不适用于您当前的XSLT 1.0环境。所以请将此帖作为其他人的未来参考。
答案 1 :(得分:1)
目前尚不清楚这个问题到底要求的是什么。
如果问题是用“%20”替换给定字符串中的所有空格字符,这里是一个XSLT解决方案:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="link/text()[contains(., ' ')]">
<xsl:call-template name="replace"/>
</xsl:template>
<xsl:template name="replace">
<xsl:param name="pText" select="."/>
<xsl:param name="pTarget" select="' '"/>
<xsl:param name="pReplacement" select="'%20'"/>
<xsl:choose>
<xsl:when test="not(contains($pText, $pTarget))">
<xsl:value-of select="$pText"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select=
"substring-before($pText, $pTarget)"/>
<xsl:value-of select="$pReplacement"/>
<xsl:call-template name="replace">
<xsl:with-param name="pText" select=
"substring-after($pText, $pTarget)"/>
<xsl:with-param name="pTarget" select="$pTarget"/>
<xsl:with-param name="pReplacement"
select="$pReplacement"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
在此XML文档上应用此转换时:
<link>http://stackoverflow.com/example of spaces</link>
产生了想要的正确结果:
<link>http://stackoverflow.com/example%20of%20spaces</link>
答案 2 :(得分:0)
我的输入是
<a href="a/file name.pdf">
我想处理这个空间,通过添加 encode(@href, 'UTF-8')
来应用 xmlns:u="java:java.net.URLEncoder"
输出:
<a href="a%2Ffile+name.pdf">
这里的问题是 + 而不是 %20。所以我用 replace($encoded-name, '[+]', '%20')
您要复制的代码:
<xsl:transform version="2.0"
xmlns:u="java:java.net.URLEncoder"
>
<xsl:param name="encoded-name" select="u:encode(@href, 'UTF-8')"/>
<xsl:param name="final-name" select="replace($encoded-name, '[+]', '%20')"/>
最终输出:
<a href="a%2Ffile%20name.pdf">