Хотите пропустить тег и получить по индексу - PullRequest
1 голос
/ 25 марта 2011

Учитывая этот XML:

<mets:mets>
 <mets:fileSec>
   <mets:fileGrp ID="fileGrp001" USE="image/dynamic">
  <mets:file ID="filebib4112678_18760203_1_24_0001_m.jp2" MIMETYPE="image/jp2" SIZE="5308416"
    CREATED="2009-11-10T00:00:00" USE="image/dynamic" ADMID="techMD001"
    CHECKSUM="c07f516d77d8a5ca452775d489ffe78c" CHECKSUMTYPE="MD5">
    <mets:FLocat LOCTYPE="URL" xlink:type="simple"
      xlink:href="file:bib4112678_18760203_1_24_0001_m.jp2"/>
  </mets:file>
  <mets:file ID="filebib4112678_18760203_1_24_0002_m.jp2" MIMETYPE="image/jp2" SIZE="5308416"
    CREATED="2009-11-10T00:00:00" USE="image/dynamic" ADMID="techMD002"
    CHECKSUM="6497ceb7a8477fbe9ba4ff9e6e57999f" CHECKSUMTYPE="MD5">
    <mets:FLocat LOCTYPE="URL" xlink:type="simple"
      xlink:href="file:bib4112678_18760203_1_24_0002_m.jp2"/>
  </mets:file>

</mets:fileGrp>
<mets:fileGrp ID="fileGrp002" USE="text/alto">
  <mets:file ID="filebib4112678_18760203_1_24_0001_alto.xml" MIMETYPE="text/xml" SIZE="1114112"
    CREATED="2009-11-10T00:00:00" USE="text/alto" ADMID="techMD005"
    CHECKSUM="e391852693f78d2eb024caf6dbdb97c6" CHECKSUMTYPE="MD5">
    <mets:FLocat LOCTYPE="URL" xlink:type="simple"
      xlink:href="file:bib4112678_18760203_1_24_0001_alto.xml"/>
  </mets:file>
  <mets:file ID="filebib4112678_18760203_1_24_0002_alto.xml" MIMETYPE="text/xml" SIZE="1114112"
    CREATED="2009-11-10T00:00:00" USE="text/alto" ADMID="techMD006"
    CHECKSUM="e391852693f78d2eb024caf6dbdb97c6" CHECKSUMTYPE="MD5">
    <mets:FLocat LOCTYPE="URL" xlink:type="simple"
      xlink:href="file:bib4112678_18760203_1_24_0002_alto.xml"/>
  </mets:file>

   </mets:fileGrp>
  </mets:fileSec>
</mets:mets>

Это выражение:

/ Mets / fileSec / fileGrp [2] / файл [2] / @ ADMID

дает результат "techMD006"

Однако я хотел бы получить тот же результат, используя что-то вроде этого выражения / запроса:

/ Mets / fileSec // файл [4] / @ ADMID

Т.е. я не хочу беспокоиться об элементе fileGrp, поскольку он усложняет ситуацию. К сожалению, приведенное выше выражение не сработало ..

Кто-нибудь знает, как сделать такое выражение?

спасибо!

1 Ответ

1 голос
/ 25 марта 2011

Ваше выражение извлекает все элементы file, которые являются потомками /mets/fileSec и являются четвертым дочерним элементом их родителей:

/mets/fileSec//file[4]/@ADMID

Но у вас нет таких элементов. Вам нужно получить все элементы file, которые являются потомками /mets/fileSec, а затем взять четвертый элемент. Используйте это:

(/mets/fileSec//file)[4]/@ADMID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...