У меня есть фрагмент 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 не поддерживает формат даты, который я использовал.Кроме того, XML-библиотека Microsoft (4.0 и 6.0) вернула весь список узлов с выражением Мэтта.Сторнирование теста устранило эту проблему, заставив вернуть только самый ранний узел.
Итак:
//STATES/STATE[(DATEOFSTATEHOOD < //STATES/STATE/DATEOFSTATEHOOD)]/CAPITAL/text()