有没有办法将属性,变量组合直接传递到xll的url路径?
示例:
http://something.xsl?asdf=12&attribute2=1234
我想使用这些属性和值来启用xsl文件中的某些标志。
答案 0 :(得分:0)
使用concat()
<xsl:variable name="url" select="concat($currURL, 'flag=true')" />
答案 1 :(得分:0)
是的,您只需要将&
转义为&
答案 2 :(得分:0)
我认为你的意思是样式表可以访问自己的URI来访问参数。在XSLT2中,您可以使用static-base-uri()函数来访问URI,然后您可以将其拆分以使用正则表达式字符串函数提取查询参数。在XSLT1中,不可能,您需要以样式表参数的形式传递信息,而XSLT1样式表无法访问源或其自身的URI。
答案 3 :(得分:0)
这是一个完整的XSLT 1.0解决方案,假设URL作为外部参数传递给转换:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pUrl" select=
"'http://something.xsl?asdf=12&attribute2=1234'"/>
<xsl:template match="/">
<xsl:variable name="vQuery" select="substring-after($pUrl, '?')"/>
<xsl:variable name="vrtfQueryItems">
<xsl:call-template name="buildQueryItems">
<xsl:with-param name="pQuery" select="$vQuery"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="vQueryItems"
select="ext:node-set($vrtfQueryItems)/*"/>
<xsl:copy-of select="$vQueryItems"/>
</xsl:template>
<xsl:template name="buildQueryItems">
<xsl:param name="pQuery"/>
<xsl:if test=
"string-length($pQuery) > 0">
<xsl:variable name="vQuery" select="concat($pQuery, '&')"/>
<xsl:variable name="vItem" select="substring-before($vQuery, '&')"/>
<param name="{substring-before(concat($vItem, '='), '=' )}">
<xsl:value-of select="substring-after($vItem, '=')"/>
</param>
<xsl:call-template name="buildQueryItems">
<xsl:with-param name="pQuery" select="substring-after($pQuery, '&')"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
当此转换应用于任何XML文档(未使用)时,生成所需结果:
<param name="asdf">12</param>
<param name="attribute2">1234</param>