我有一个类型为 C:/Documents and Settings/Saxon/output1/index.html?value=65abc 的 url
现在我需要从我的 xslt 中的 url '65abc' 获取这部分。单击链接时,我从上一页获取此值。
知道怎么做吗?
使用:
substring-after($pPath, '=')
其中是对包含类似 url 的文件路径的值的$pPath
全局外部的引用,从转换的调用者传递。xsl:param
如果pPath
包含多个查询字符串参数并且您想要访问第一个的值,则使用:
substring-after(substring-before(substring-after($pPath, '?'), '&'), '=')
如果您使用的是 XSLT 2.0 (XPath 2.0),那么您可以访问名为$pQName
using的查询字符串参数的值:
substring-after
(tokenize(substring-after($pPath, '?'), '&')
[starts-with(., concat($pQName, '='))],
'='
)
以下是完整的代码示例:
. . .
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pPath" select=
"'C:/Documents and Settings/Saxon/output1/index.html?value=65abc'"/>
<xsl:template match="node()|@*">
<xsl:sequence select="substring-after($pPath, '=')"/>
</xsl:template>
</xsl:stylesheet>
当这应用于任何 XML 文档(未使用)时,会产生想要的结果:
65abc
.2. 当对任何 XML 文档(未使用)执行此转换时:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pPath" select=
"'C:/Documents and Settings/Saxon/output1/index.html?value=65abc&x=1&y=2'"/>
<xsl:param name="pQName" select="'x'"/>
<xsl:template match="node()|@*">
<xsl:sequence select=
"substring-after
(tokenize(substring-after($pPath, '?'), '&')
[starts-with(., concat($pQName, '='))],
'='
)"/>
</xsl:template>
</xsl:stylesheet>
生成所需的字符串(名为 的查询字符串参数的值x
):
1