如何在XSLT中从url动态获取值

时间:2012-06-08 08:09:14

标签: url xslt

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

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

知道怎么做吗?

1 个答案:

答案 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, '='))],
   '='
   )

以下是完整的代码示例

  1. 最简单的情况
  2. 。 。

    <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&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