我正在使用xalan處理器在Oxygen中調試xslt樣式表。我似乎無法得到當前時間()或時間小時()函數的工作。我收到「找不到功能」錯誤。我究竟做錯了什麼?這裏是代碼。在xslt中無法識別xpath函數
<xsl:variable name="isPm" select="hours-from-time(n1:TIME_REPORT) >= 12"/>
我正在使用xalan處理器在Oxygen中調試xslt樣式表。我似乎無法得到當前時間()或時間小時()函數的工作。我收到「找不到功能」錯誤。我究竟做錯了什麼?這裏是代碼。在xslt中無法識別xpath函數
<xsl:variable name="isPm" select="hours-from-time(n1:TIME_REPORT) >= 12"/>
hours-from-time和current-time是XPath 2.0函數。 Xalan僅支持XPath 1.0。的支持的Xalan擴展函數
後來的版本,這將給一些這方面的功能。你正在尋找的功能都以某種形式存在。請注意,由於XPath 1.0不理解日期時間,因此您將處理字符串。不過看到,例如:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date">
<xsl:template match="/">
<html>
<head>
<title>Current Date Test</title>
</head>
<body>
<h1>It's now <xsl:value-of select="date:date-time()"/>.</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
見Xalan Extension Function頁,也是EXSLT Extension Function page for Dates and Times兩者。
有什麼辦法可以在xpath 1.0中獲得當前時間嗎? – whyvez 2011-01-07 20:29:34
那些不是標準的XPath 1.0功能。如果您的處理器具有作爲擴展實現的這些功能,那麼您應該爲它們添加正確的名稱空間。
從http://www.w3.org/TR/xslt#section-Extension-Functions
如果在一個FunctionCall 表達FunctionName不是NCName來(即,如果 它包含一個冒號),那麼它是 ,以一個擴展 函數的調用處理。 FunctionName將 擴展爲使用來自評估 上下文的名稱空間 聲明的名稱。
如果XSLT處理器不具有 實現特定名稱 的延伸 功能可用,則
function-available
功能必須爲 名返回false。如果這樣一個擴展函數 在表達發生並且 擴展功能實際上是所謂的, XSLT處理器必須發信號通知 錯誤。 XSLT處理器不能 僅僅發出錯誤信號,因爲 表達包含一個擴展 功能對於沒有執行 可用。如果XSLT處理器有一個 實現特定名稱 的延伸 功能可用,那麼
function-available
功能必須爲 名返回true。如果這樣的擴展被調用,然後 XSLT處理器必須調用 實現傳遞函數 調用參數;通過 執行返回的結果返回爲函數調用的 結果。
I am debugging an xslt stylesheet in Oxygen using the xalan processor.
我似乎無法得到 當前時間()或小時的時間() 職能工作。我得到一個「不能 查找功能」的錯誤。
正如@lavinio和@Alejandro所指出的,這兩個函數是在Xalan 2.0中不支持的XPath 2.0中引入的。
您可以將當前時間作爲參數傳遞給XSLT 1.0轉換。
請注意,即使在XPath 2.0中,轉換期間對current-time()
的多次評估返回相同的值。所以這個函數不會給你任何東西超過你通過傳遞當前時間作爲參數。
好問題,+1。查看我的答案,瞭解`current-time()`函數的解釋和解決方案。 – 2011-01-08 04:29:27