取值I C型的URL:/ Documents和設置/薩克森/輸出1/index.html的價值= 65abc如何動態地從URL中XSLT
現在我需要從網址提取這部分' 65abc'在我的xslt中。點擊鏈接時,我從上一頁獲取該值。
任何想法如何做到這一點?
取值I C型的URL:/ Documents和設置/薩克森/輸出1/index.html的價值= 65abc如何動態地從URL中XSLT
現在我需要從網址提取這部分' 65abc'在我的xslt中。點擊鏈接時,我從上一頁獲取該值。
任何想法如何做到這一點?
使用:
substring-after($pPath, '=')
其中$pPath
是包含URL-等)的文件路徑的值,從變換的調用傳遞的整體外部xsl:param
參考。
在情況下pPath
包含一個以上的查詢字符串參數,你要訪問的第一個的值,然後使用:
substring-after(substring-before(substring-after($pPath, '?'), '&'), '=')
如果使用XSLT 2.0(XPath 2.0中) ,那麼你可以使用訪問命名$pQName
查詢字符串參數的值:
substring-after
(tokenize(substring-after($pPath, '?'), '&')
[starts-with(., concat($pQName, '='))],
'='
)
這裏有COMPLE TE代碼示例:
。 。 。
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pPath" select=
"'C:/Documents and Settings/Saxon/output1/index.html?value=65abc'"/>
<xsl:template match="node()|@*">
<xsl:sequence select="substring-after($pPath, '=')"/>
</xsl:template>
</xsl:stylesheet>
時,這是對任何XML文檔(未使用)施加時,所需的結果產生:
65abc
0.2。 當在任何XML文檔(未使用)進行這種轉變:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pPath" select=
"'C:/Documents and Settings/Saxon/output1/index.html?value=65abc&x=1&y=2'"/>
<xsl:param name="pQName" select="'x'"/>
<xsl:template match="node()|@*">
<xsl:sequence select=
"substring-after
(tokenize(substring-after($pPath, '?'), '&')
[starts-with(., concat($pQName, '='))],
'='
)"/>
</xsl:template>
</xsl:stylesheet>
有用字符串(命名x
查詢字符串參數的值)產生:
1
我還不清楚在這種情況下怎麼做 - C:/ Documents and Settings/Saxon/output1/index.html?value = 65abc。我只需要url部分'65abc' – user1402867
@ user1402867:你不知道如何使用'
我知道如何使用
的XSL本身不能訪問URL變量 - 您需要手動傳遞這些變量。你在哪個平臺上運行XSL?例如,在PHP中,您可以使用'$ process-> setParameter'。然後,只要你的XSL聲明瞭變量,它就會收到它,你可以引用它。 – Utkanos
感謝您的回覆!我正在使用XSLT將XML轉換爲HTML。我想要有2個HTML文件,我正在使用Saxon。在我有鏈接的第一個文件中,當我點擊鏈接時,一個值被髮送到網址。爲了做到這一點,我正在使用 - 現在,當我點擊鏈接時,我可以獲得url中的值,現在我需要使用來自我的XSLT中的網址顯示其他詳細信息。 – user1402867
這不是一個URL,它是一個Windows文件名。 –