私はXMLスニペットを持っているので、次のようになります。
<STATES>
<STATE>
<NAME>Alabama</NAME>
<ABBREVIATION>AL</ABBREVIATION>
<CAPITAL>Montgomery</CAPITAL>
<POPULATION>4661900</POPULATION>
<AREA>52419</AREA>
<DATEOFSTATEHOOD>14 December 1819</DATEOFSTATEHOOD>
</STATE>
<STATE>
<NAME>Alaska</NAME>
<ABBREVIATION>AK</ABBREVIATION>
<CAPITAL>Juneau</CAPITAL>
<POPULATION>698473</POPULATION>
<AREA>663268</AREA>
<DATEOFSTATEHOOD>1 January 1959</DATEOFSTATEHOOD>
</STATE>
<STATE>
<NAME>Delaware</NAME>
<ABBREVIATION>DE</ABBREVIATION>
<CAPITAL>Dover</CAPITAL>
<POPULATION>885122</POPULATION>
<AREA>2490</AREA>
<DATEOFSTATEHOOD>7 December 1787</DATEOFSTATEHOOD>
</STATE>
</STATES>
<etc, etc.>
(たとえば)最も古い州の首都(つまり「ドーバー」)を取得したいと思います。私はここまで到達することができました:
//STATES/STATE[DATEOFSTATEHOOD='7 December 1787']/CAPITAL/text()
しかし、「DATEOFSTATEHOOD={最も早いDATEOFSTATEHOOD}」と言う方法を理解することはできません。
誰かが私を正しい方向に向けることができますか?
解決策:マットの解決策は多かれ少なかれ的を射ています。指摘されたように、Xpath 1.0は使用していた日付形式をサポートしていないため、日付を再形式化する必要がありました(YYYYMMDDDを使用しました)。また、MicrosoftのXMLライブラリ(4.0および6.0)は、Mattの式を含むノードリスト全体を返しました。テストを逆にすると、その問題が修正され、最も古いノードだけが返されるようになりました。
それで:
//STATES/STATE[(DATEOFSTATEHOOD < //STATES/STATE/DATEOFSTATEHOOD)]/CAPITAL/text()