2015-11-19 85 views
0

我有一個150MB的XML文件,我想與撒克遜獲取日期:XSLT 2.0產生損壞的數據

<DueDate><xsl:value-of select="billduedate"/></DueDate> 

在原始XML文件<billduedate>是同樣爲所有子節點 - <billduedate>2015-12-25</billduedate>並有34711個實例其中。不知何故,在結果XML我得到42 <DueDate>標籤,其中包含非日期值。例如:

<DueDate>t&gt;15-12-25</DueDate> 
<DueDate>t015-12-25</DueDate> 
<DueDate>ta15-12-25</DueDate> 
<DueDate>tamou12-25</DueDate> 
<DueDate>total12-25</DueDate> 
<DueDate>unt5-12-25</DueDate> 
<DueDate>voi5-12-25</DueDate> 

對於其他34669個標籤日期是正確<DueDate>2015-12-25</DueDate>。 我再重複一遍 - 在原始文件中沒有日期問題。我是否面臨某種Java內存問題?如何克服它?從邁克爾·凱(Saxonica)

+0

你可以嘗試與另一處理器運行它,看它是否是撒克遜具體 – wero

+0

哪個版本撒克遜究竟是什麼?你如何在Java程序中從命令行運行Saxon? –

+0

版本是HE 9.6.0.7 我從Linux命令行運行它: net.sf.saxon.Transform -s:input.xml -xsl:template2_1.xsl -o:output.xml 在運行的那一刻我至少有4G的空閒內存。 –

回答

0

答:

我已複製了問題(與內置的JDK解析器com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser),和我已確定數據在從XML解析器傳遞到Saxon時已損壞。我在這裏使用JDK 1.6.0.27。

的問題是不存在的時候我切換到JDK 1.8.0_25。

我也確定,問題就解決了您使用Apache的(org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParser)Xerces解析器

結論:臭蟲在JDK XML解析器。