現在受け入れ答えは一般的に間違っています。
このURLでそれを試してみてください:あなたはそれを再利用するだろう答えを読む場合は、この質問が既に回答されたsomething
...:
http://www.mysite.com/test.aspx?subVar=something&bVar=somethingMore
、あなたは間違った結果を取得します生成された結果からあなたのQStringを得る:
<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:strip-space elements="*"/>
<xsl:param name="pUrl" select=
"'http://www.mysite.com/test.aspx?subVar=something&bVar=somethingMore'"/>
<xsl:template match="/">
<xsl:variable name="vrtfQStrings">
<xsl:call-template name="GetQueryStringParams"/>
</xsl:variable>
bVar = "<xsl:value-of select="ext:node-set($vrtfQStrings)/bVar"/>"
</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ドキュメント(未使用)、この変換は指名手配、正しい結果生成:
bVar = "somethingMore"
を私はDimitreはすでにhttp://stackoverflow.com/questions/9211437/passing-a-url-variableでこれを答えだと思います-into-xsl –
ヘッドアップありがとう。 –
そのように見えたら申し訳ありません。近い将来、同じ問題を出すが、より大きなスケールであなたのコードを使用する予定です。私は短期的な問題に答えるので、私は以下の答えを受け入れました。ご返信ありがとうございます。 –