這種變換正確求出查詢字符串值,而不管其位置的(在開始時,在midle或在包含字符串的末尾所有查詢字符串):
<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:template match="/*">
<xsl:variable name="vQueryStrings"
select="concat('&',substring-after(@Href, '?'), '&')"/>
<xsl:variable name="vWantedValue" select=
"substring-before
(substring-after($vQueryStrings, '&GroupID='),
'&')"/>
<xsl:value-of select="concat(@FriendlyHref, '?',$vWantedValue)"/>
</xsl:template>
</xsl:stylesheet>
當施加到所提供的XML文檔(略微校正,以使具有挑戰性,並且它簡潔(wellformed)):
<Page SmallImage="" LargeImage="" Icon=""
MenuText="Text" MouseOver="" Image=""
ImageActive="" ImageMouseOver="" Allowclick="True"
ShowInSitemap="True"
Href="Default.aspx?ID=27&GroupID=GROUP11&foo=bar"
FriendlyHref="/nl-nl/assortiment/group/category/text.aspx"
Title="" NavigationTag="" RelativeLevel="4" Sort="1"
LastInLevel="True" ChildCount="0" class="L4" ID="18"
AreaID="1" InPath="False" Active="False" AbsoluteLevel="4"/>
的想要的,正確的結果產生:
/nl-nl/assortiment/group/category/text.aspx?GROUP11
最後:一個完全通用/參數化的解決方案,它接受任何查詢字符串名稱作爲參數,併產生其值:
<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:template match="/*">
<xsl:call-template name="getQueryString"/>
</xsl:template>
<xsl:template name="getQueryString">
<xsl:param name="pHrefName" select="'Href'"/>
<xsl:param name="pQSName" select="'GroupID'"/>
<xsl:variable name="vQueryStrings"
select="concat('&',
substring-after(@*[name()=$pHrefName], '?'),
'&')"/>
<xsl:variable name="vWantedValue" select=
"substring-before
(substring-after($vQueryStrings, concat('&', $pQSName, '=')),
'&')"/>
<xsl:value-of select="$vWantedValue"/>
</xsl:template>
</xsl:stylesheet>
將此轉換應用於上述XML文檔時,會生成想要的結果:
GROUP11
棒極了!正是我需要的。在這種情況下很好的解決方案,因爲GroupID確實總是最後一個參數。 – Rob 2011-10-17 12:52:14
如果XML是這樣:'And, Jo `。 http://stackoverflow.com/questions/29307212/how-to-get-certain-part-of-a-link-in-xslt –
SearchForKnowledge
2015-03-27 18:09:24