我的xsl变量的值如下所示
<xsl:variable name="url">
<xsl:value-of select="'http://1.2.34.4:70/Anything/uri'"/>
</xsl:variable>
我需要用名称 - abcd.com替换ip地址和端口组合部分,然后将其存储在另一个变量中。所以变量的值为'http://abcd.com/Anything/uri'。我怎样才能做到这一点。我必须使用正则表达式。变量url也可以以https开头,而且uri可以有任意数字的斜杠。即代替/ Anything / uri它可以有/ uri或/ Anything / other / uri
答案 0 :(得分:1)
此XSLT 1.0转换:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vReplacement" select="'abcd.com'"/>
<xsl:template match="/">
<xsl:variable name="vUrl" select="'http://1.2.34.4:70/Anything/uri'"/>
<xsl:variable name="vReplaced">
<xsl:value-of select="concat(substring-before($vUrl,'//'), '//')"/>
<xsl:value-of select="concat($vReplacement, '/')"/>
<xsl:value-of select="substring-after(substring-after($vUrl,'//'),'/')"/>
</xsl:variable>
"<xsl:copy-of select="$vReplaced"/>"
</xsl:template>
</xsl:stylesheet>
应用于任何XML文档(未使用)时,将变量$vReplaced
设置为所需的正确值并将其内容复制到输出:
"http://abcd.com/Anything/uri"
解释:正确使用 substring-before()
, substring-after()
和concat()
。