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
查詢字符串參數不是第一個,甚至在情況下,當它是最後一個。
問題是我不知道它是否會以功能結束...用戶只會複製網址並期望它能夠正常工作。我的工作是解析一切。我在考慮?v =和&,但它可能沒有&符號。 – Armstrongest 2012-07-11 16:42:20
好的...對於xmlplayground ...完全+1網站。此外,我修改瞭解決方案'\t 也要抓住正確的URL。 –
Armstrongest
2012-07-11 16:47:10
謝謝 - 我幾周前推出了它。傳播達字:)很高興你得到了你需要的結果。 – Utkanos 2012-07-11 16:57:30