1

我有一个类型为 C:/Documents and Settings/Saxon/output1/index.html?value=65abc 的 url

现在我需要从我的 xslt 中的 url '65abc' 获取这部分。单击链接时,我从上一页获取此值。

知道怎么做吗?

4

1 回答 1

1

使用

substring-after($pPath, '=')

其中是对包含类似 url 的文件路径的值的$pPath全局外部的引用,从转换的调用者传递。xsl:param

如果pPath包含多个查询字符串参数并且您想要访问第一个的值,则使用

substring-after(substring-before(substring-after($pPath, '?'), '&'), '=')

如果您使用的是 XSLT 2.0 (XPath 2.0),那么您可以访问名为$pQNameusing的查询字符串参数的值:

 substring-after
   (tokenize(substring-after($pPath, '?'), '&')
         [starts-with(., concat($pQName, '='))],
   '='
   )

以下是完整的代码示例

  1. 最简单的情况

. . .

<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&amp;x=1&amp;y=2'"/>
  <xsl:param name="pQName" select="'x'"/>   

 <xsl:template match="node()|@*">
     <xsl:sequence select=
     "substring-after
       (tokenize(substring-after($pPath, '?'), '&amp;')
             [starts-with(., concat($pQName, '='))],
      '='
      )"/>
 </xsl:template>
</xsl:stylesheet>

生成所需的字符串(名为 的查询字符串参数的值x

1
于 2012-06-08T12:16:42.523 回答