xslにURL変数を渡すことは可能ですか?URL変数をxslに渡す
EG。 ます。http:?www.somedomain.com/index.aspx myVarに=テスト& myVar2 = anotherTest
私は私のXSLファイルのロジックでmyVarにし、myVar2の値を使用できるようにしたいと思います。おかげさまで
xslにURL変数を渡すことは可能ですか?URL変数をxslに渡す
EG。 ます。http:?www.somedomain.com/index.aspx myVarに=テスト& myVar2 = anotherTest
私は私のXSLファイルのロジックでmyVarにし、myVar2の値を使用できるようにしたいと思います。おかげさまで
もちろん可能です。 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。私はちょうどこの質問に戻ってチェックした。それは非常に印象的なように見え、私はそれを試してみるでしょう。御時間ありがとうございます。 –
@ user1001421:どうぞよろしくお願いいたします。 –
次に、myVarとmyVar2の値にアクセスするためにURLを分割する必要がありますか? –
@ user1001421、私は私の答えを更新しました。 –
素晴らしい。助けてくれてありがとう。ちょうど私が後だったもの。 –