在一個xml文件中,我有許多日期字段。我需要找出哪一個是最高價值。不幸的是我不得不使用xpath 1.0,所以不容易做到這一點。xpath 1.0從XML中獲取最高日期
我開始了這個XML:
<root>
<value>20120103</value>
<value>20130103</value>
<value>20120101</value>
<value>20140103</value>
<value>20100103</value>
</root>
從這個,我能得到這個XPath語句的最高值:
/root/value[not(text() <= preceding-sibling::value/text()) and not(text() <=following-sibling::value/text
())]
然而,真正的XML我與GOT工作日期字段是這樣的:
<root>
<value>2012-01-03</value>
<value>2013-01-03</value>
<value>2012-01-01</value>
<value>2014-01-03</value>
<value>2010-01-03</value>
</root>
要執行相同的Xpath,我必須使用substring和concat來刪除m inus標誌。然而,我使用Xpath和Oxygen XML編輯器的應用程序告訴我concat和substring沒有Xpath 1.0函數(儘管幾頁告訴我他們是......)
當我告訴氧氣它是Xpath 2.0,我可以得到這個聲明的值:
/root/value[not(concat(concat(substring(text(),1,4),substring(text(),6,2)),substring(text(),9,2)) <= preceding-sibling::value/concat(concat(substring(text(),1,4),substring(text(),6,2)),substring(text(),9,2))) and not
(concat(concat(substring(text(),1,4),substring(text(),6,2)),substring(text(),9,2)) <=following-sibling::value/concat(concat(substring(text(),1,4),substring(text(),6,2)),substring(text(),9,2)))]
任何想法,爲什麼它不與Xpath 1.0一起工作,以及如何解決這個問題?
編輯:
我想我正在用翻譯刪除減號接近:
/root/value[not(translate(text(),'-','') <= translate(preceding-sibling::value/text(),'-','')) and not(translate(text(),'-','') <=translate(following-sibling::value/text(),'-','')
)]
但對於一個或這將產生兩個值的另一個原因:
2013-01 -03 2014-01-03
雖然我只希望第二個
謝謝,我相信你是對的,嘗試了很多我在網上找到的不同解決方案,但是沒有人使用Xpath 1.0。猜猜我必須向軟件供應商詢問實現Xpath 2的版本 – ErikL
@ErikL,不客氣。您可以實現自己的擴展功能,或者更好的,開始使用XPath 2.0。 –