2009-05-01 99 views

回答

2

這也許可以使用EXSLT,或者註冊一個回調函數與特定的XSLT處理器,但與普通的舊XSLT,至少不是我的知識。使用普通的XSLT,如果它不在XML中,則它不存在。

0

如果是客戶端,沒有辦法做到這一點。不幸的是,瀏覽器中的xsl非常有限。恐怕您需要將功能移至webapp或javascript。

如果變換是服務器端,那麼可能有些事情可以做。

+0

請問您能詳細說明如何完成服務器端? – Iris 2009-05-01 19:59:46

+0

@Iris,恐怕我不能,我只做了瀏覽器端的xslt。抱歉。 – Buddy 2009-05-01 21:55:48

3

是否可以在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&amp;paramb=2&amp;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="'?&amp;'"/> 
     </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>&#xA;</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&amp;paramb=2&amp;anyParamName=AnyValue'" 
/> 

<xsl:template match="/"> 
    <xsl:value-of separator="&#xA;" select= 
    "tokenize($pQString, '\?|&amp;') 
    "/> 
</xsl:template> 

當執行上述XSLT 2.0轉化,它產生正確結果

parama=1 
paramb=2 
anyParamName=AnyValue 
0

我解決此通過在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>