由於MS沒有實現Xpath/XSL 2.0,並且它們的XPath擴展沒有包含當前日期()函數,因此如何實現這一點在XSLT中?(How)你能否使用.Net XPath處理在XSLT/XPath中獲得當前日期
注意:我沒有調用代碼的控制,所以我不能在作爲參數傳遞或建立一個幫助DLL等
感謝 馬特
由於MS沒有實現Xpath/XSL 2.0,並且它們的XPath擴展沒有包含當前日期()函數,因此如何實現這一點在XSLT中?(How)你能否使用.Net XPath處理在XSLT/XPath中獲得當前日期
注意:我沒有調用代碼的控制,所以我不能在作爲參數傳遞或建立一個幫助DLL等
感謝 馬特
收到了來自MSDN博客論壇這一反饋。在這裏張貼的完整性:
嗨馬特,
有基本實現你所需要的3種方式。
傳遞的日期作爲外部參數(見詳情這裏:http://msdn.microsoft.com/en-us/library/dfktf882(VS.80).aspx) - 這是一個理想的解決方案,但是從你寫它可能無法
使用樣式表中的腳本 - 在這裏就是一個例子
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my="put-your-namespace-uri-here"
exclude-result-prefixes="msxsl my">
<xsl:output method="xml"/>
<msxsl:script language="C#" implements-prefix="my">
public string Now(){
return DateTime.Now.ToString("O");
}
</msxsl:script>
<xsl:template match="/">
<now>
<xsl:value-of select="my:Now()" />
</now>
</xsl:template>
</xsl:stylesheet>
的這裏需要注意的是,如果一個樣式表中包含的腳本,你應該只有一次加載和再利用(出於性能原因,建議,即使你沒有腳本)。原因是每次載入一個xslt樣式表時,它都會將腳本編譯爲一個動態創建的程序集,然後不能卸載(卸載它們的唯一方法是卸載整個appdomain)。如果您的應用程序經常這樣做,那麼您最終可能會發生OutOfMemoryException。
使用擴展對象 - 與上面類似,但您沒有動態程序集的問題。下面是關於如何做到這一點的一些細節:http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addextensionobject.aspx
它看起來像你限制你的資源... – 2011-01-27 16:43:34