I. この XPath 2.0 式:
substring-after(tokenize($pUrl, '[?|&]')[starts-with(., 'v=')], 'v=')
必要な正しい結果を生成します。
または、少し短いものを使用できます。
tokenize(tokenize($pUrl, '[?|&]')[starts-with(., 'v=')], '=')[2]
完全な XSLT 2.0 変換を次に示します。
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:param name="pUrl" select=
"'http://www.youtube.com/watch?v=qadqO3TOvbQ&feature=channel&list=UL'"/>
<xsl:template match="/">
<xsl:sequence select=
"tokenize(tokenize($pUrl, '[?|&]')[starts-with(., 'v=')], '=')[2]"/>
</xsl:template>
</xsl:stylesheet>
この変換が任意の XML ドキュメント (使用されていない) に適用されると、必要な正しい結果が生成されます。
qadqO3TOvbQ
Ⅱ.この XPath 1.0 式:
concat
(substring-before(substring-after(concat($pUrl,'&'),'?v='),'&'),
substring-before(substring-after(concat($pUrl,'&'),'&v='),'&')
)
必要な結果が生成されます。
注意してください:
v
どちらのソリューションも、指定されたクエリ文字列パラメーターが最初のものでなくても、または最後のものであっても、必要な文字列を抽出します。