我有一個具有URL結構的網頁: http://www.abc.com/xyz?parama=1¶mb=2檢索頁面網址參數或網頁網址XSLT
是可以用於獲得任何額外的價值PARAMS的URL可能創建一個通用的方法( parama = 1 & paramb = 2)
可以在XSL中獲取類似於javascript的location.href的頁面的URL嗎?
我有一個具有URL結構的網頁: http://www.abc.com/xyz?parama=1¶mb=2檢索頁面網址參數或網頁網址XSLT
是可以用於獲得任何額外的價值PARAMS的URL可能創建一個通用的方法( parama = 1 & paramb = 2)
可以在XSL中獲取類似於javascript的location.href的頁面的URL嗎?
這也許可以使用EXSLT,或者註冊一個回調函數與特定的XSLT處理器,但與普通的舊XSLT,至少不是我的知識。使用普通的XSLT,如果它不在XML中,則它不存在。
如果是客戶端,沒有辦法做到這一點。不幸的是,瀏覽器中的xsl非常有限。恐怕您需要將功能移至webapp或javascript。
如果變換是服務器端,那麼可能有些事情可以做。
是否可以在XSL中獲取頁面的URL類似於javascript的location.href?
不完全一樣,但是,查詢字符串可以作爲參數傳遞。
是能夠提供用於得到任何 額外的值PARAMS的URL也許 (至尊= 1 & paramb = 2)
是,一個能夠執行標記化創建通用 方法(使用XSLT 2.0或XSLT 1.0中的tokenize()
函數,使用str-split-to-words
模板**FXSL 1.x或自寫的遞歸標記化模板。)
XSLT 1.0溶液:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common"
>
<xsl:import href="strSplit-to-Words.xsl"/>
<xsl:output indent="yes" omit-xml-declaration="yes"/>
<xsl:param name="pQString" select=
"'?parama=1&paramb=2&anyParamName=AnyValue'"
/>
<xsl:template match="/">
<xsl:variable name="vwordNodes">
<xsl:call-template name="str-split-to-words">
<xsl:with-param name="pStr" select="$pQString"/>
<xsl:with-param name="pDelimiters"
select="'?&'"/>
</xsl:call-template>
</xsl:variable>
<xsl:apply-templates select=
"ext:node-set($vwordNodes)/*
"/>
</xsl:template>
<xsl:template match="word">
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
當上述變換上任何XML文檔應用(將不被使用)時,所需的結果是產生:
parama=1
paramb=2
anyParamName=AnyValue
待辦事項使用FXSL 1.x str-split-to-words
模板和使用EXSLT ext:node-set()
擴展功能。
XSLT 2。0溶液:
<xsl:param name="pQString" as="xs:string" select=
"'?parama=1&paramb=2&anyParamName=AnyValue'"
/>
<xsl:template match="/">
<xsl:value-of separator="
" select=
"tokenize($pQString, '\?|&')
"/>
</xsl:template>
當執行上述XSLT 2.0轉化,它產生正確結果:
parama=1
paramb=2
anyParamName=AnyValue
我解決此通過在mi XSLT文件中使用JavaScript。看一看。
關於XML我有一個名爲tag的標籤元素!是的,非常原始...
<tag url="http://www.demo.net/share.php?u=param1 />
彌樣品轉變
<div class="HelloDiv">
<xsl:for-each select="tag">
<a href="{@url}">
This is my custom URL
</a>
</xsl:for-each>
</div>
現在的模板內變換,在將裝載在這種情況下,我要去的參數1 我的自定義值通過使用jquery函數來使用document.title ..
<script type="text/javascript">
jQuery(function(){
jQuery('div.HelloDiv a').each(function(){
var parameter = jQuery(this).attr('href');
parameter = currentUrl.replace('param1',escape(document.title));
jQuery(this).attr('href',parameter);
})
});
</script>
請問您能詳細說明如何完成服務器端? – Iris 2009-05-01 19:59:46
@Iris,恐怕我不能,我只做了瀏覽器端的xslt。抱歉。 – Buddy 2009-05-01 21:55:48