我有一个C类型的网址:/ Documents and Settings / Saxon / output1 / index.html?value = 65abc
现在我需要从我的xslt中的url'65abc'获取此部分。点击链接后,我从上一页获得此值。
知道怎么做吗?
答案 0 :(得分:1)
使用强>:
substring-after($pPath, '=')
其中$pPath
是对包含类似url的文件路径的值的全局外部xsl:param
的引用,从转换的调用者传递。
如果pPath
包含多个查询字符串参数,并且您想要访问第一个值,请使用:
substring-after(substring-before(substring-after($pPath, '?'), '&'), '=')
如果您使用的是XSLT 2.0(XPath 2.0),则可以使用访问名为$pQName
的query-string-parameter的值:
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
0.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