是否可以将URL变量传递到xsl中。将URL变量传递到xsl中
EG。 HTTP:www.somedomain.com/index.aspx myVar的=测试& myVar2 = anotherTest
我希望能够使用myVar的和myVar2的价值观在我的XSL文件的逻辑? 谢谢。
是否可以将URL变量传递到xsl中。将URL变量传递到xsl中
EG。 HTTP:www.somedomain.com/index.aspx myVar的=测试& myVar2 = anotherTest
我希望能够使用myVar的和myVar2的价值观在我的XSL文件的逻辑? 谢谢。
当然,你可以。在xsl:stylesheet
元素中使用xsl:param
元素并从您的XSL引擎传递参数。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="url"/>
然后使用字符串的功能,例如:
<xsl:variable name="right-part" select="substring-after($url, 'myVar=')"/>
<xsl:value-of select="substring-before(substring-before($right-part, 'myVar2='), '&')"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="substring-after($right-part, 'myVar2=')"/>
这里是一个更通用的改造,其从给定的URL任意数量的查询字符串参数:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pUrl" select=
"'http:www.somedomain.com/index.aspx?myVar=test&myVar2=anotherTest&myVar3=yetAnotherTest'"/>
<xsl:template match="/">
<xsl:call-template name="GetQueryStringParams"/>
</xsl:template>
<xsl:template name="GetQueryStringParams">
<xsl:param name="pUrl" select="$pUrl"/>
<xsl:variable name="vQueryPart" select=
"substring-before(substring-after(concat($pUrl,'?'),
'?'),
'?')"/>
<xsl:variable name="vHeadVar" select=
"substring-before(concat($vQueryPart,'&'), '&')"/>
<xsl:element name="{substring-before($vHeadVar, '=')}">
<xsl:value-of select="substring-after($vHeadVar, '=')"/>
</xsl:element>
<xsl:variable name="vRest" select="substring-after($vQueryPart, '&')"/>
<xsl:if test="string-length($vRest) > 0">
<xsl:call-template name="GetQueryStringParams">
<xsl:with-param name="pUrl" select=
"concat('?', substring(substring-after($vQueryPart, $vHeadVar), 2))"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
将此转换应用于任何XML文档(未使用)时,会生成想要的正确结果:
<myVar>test</myVar>
<myVar2>anotherTest</myVar2>
<myVar3>yetAnotherTest</myVar3>
对不起Dimitre。我只是在这个问题上检查过。这看起来非常令人印象深刻,我一定会尝试一下。谢谢你的时间。 – 2012-02-09 16:30:55
@ user1001421:不客气。 – 2012-02-09 16:57:25
那么我需要拆分URL以访问myVar和myVar2的值吗? – 2012-02-09 13:14:54
@ user1001421,我已经更新了我的答案。 – 2012-02-09 13:16:12
太棒了。非常感谢你的帮助。就是我以后的样子。 – 2012-02-09 13:18:29