我需要幫助解決其中一個問題。我是XSLT新手。現在我正在嘗試編寫一個將生成文本輸出的XSLT(例如:「01:30」)。 在我的XSLT 2.0,我打電話的XPath函數hours-from-duration($duration)
而這個函數拋出錯誤
XPath是無效
我還可以看到上面的錯誤在以下日誌。請幫我解決我的問題。感謝...
16:01:39403 ERROR [主要] JAXPSAXProcessorInvoker - 錯誤檢查類型表達的 'funcall(小時從持續時間,[可變REF(持續時間/節點集)])' 。
16:01:39404 ERROR [主要] JAXPSAXProcessorInvoker - 無法編譯樣式表
javax.xml.transform.TransformerConfigurationException:在com.sun.org.apache.xalan.internal.xsltc無法編譯樣式表。 trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:858)在com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:648)
我的XSLT:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:str="http://exslt.org/strings"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
version="1.0" xmlns:xalan="http://xml.apache.org/xslt">
<xsl:output method="text" />
<xsl:variable name="request" select="/*[local-name()='Payout']/*[local-name()='Request']" />
<xsl:variable name="duration" select="$request/Time" />
<xsl:template match="/">
<xsl:value-of select="(hours-from-duration($duration))"/>
<xsl:text>:</xsl:text>
<xsl:value-of select="(minutes-from-duration($duration))"/>
</xsl:template>
</xsl:stylesheet>
XML輸入:
<Payout>
<Request Commit="true" Transaction="false">
<Month>JAN</Month>
<Time>P01H30M33S</Time>
</Request>
</Payout>
哪裏是'$ duration'設置? – kjhughes