Подсчитать предыдущие элементы, которые имеют local-name (), равный 'FootNoteReference' - PullRequest
1 голос
/ 17 декабря 2008

Как подсчитать, сколько предыдущих FootNoteReference узлов имеется в XML-документе, например, этом ...

<MyDoc>
<title>&lt;Big Title&gt;</title>
<head>Objective</head>
<head2>&lt;Heading&gt;</head2>
<head>Introduction</head>
<Para>
    asdf asdf asdf asd<FootNoteReference />asdf asdf asfd asfd 
</Para>
<head>Overview</head>
<Para>
    &lt;Begin with a definition of the class to which<FootNoteReference /> the categories belong, if required.&gt;
</Para>
<Para>&lt;List the different categories to be taught.&gt;</Para>
<Heading1>&lt;Category 1&gt;</Heading1>
<Para>&lt; som neodolal a celé ozdobené spústou prachu v jednom preso&gt;</Para>
<Para>&lt;Provide examples, if required.&gt;</Para>
<Heading1>&lt;Category 2&gt;</Heading1>
<Para>&lt; som neodolal a celé ozdobené spústou prachu v jednom preso&gt;</Para>
<Para>&lt;Provide examples, if required.&gt;</Para>
<Heading1>&lt;Category 3&gt;</Heading1>
<Para>
    &lt;Provide a description<FootNoteReference /> of the third category as outlined in the list.&gt;
</Para>
<Para>&lt;Provide examples, if required.&gt;</Para>
<head>Summary</head>
<ListItem type="ul">&lt;Summarize the definition, if applicable.&gt;</ListItem>
<ListItem type="ul">&lt; som neodolal a celé ozdobené spústou prachu v jednom preso<FootNoteReference />.&gt;</ListItem>
<ListItem type="ul">&lt; som neodolal a celé ozdobené spústou prachu v jednom preso&gt;</ListItem></MyDoc>

Обратите внимание, как узел FootNoteReference вложен на разных уровнях. Я знаю, если бы они все были вложены на одном уровне, я мог бы сделать: count(preceding-sibling::*[local-name() = 'FootNoteReference'])

Спасибо!

1 Ответ

4 голосов
/ 17 декабря 2008

Использование оси "preceding" :

count($vNode/preceding::FootNoteReference)

- это число FootNoteReference элементов, которые предшествуют узлу, на который ссылается $vNode.

Если узел является потомком какого-либо элемента FootNoteReference, и вы также хотите сосчитать элементы FootNoteReference его предка, то вхождения элемента FootNoteReference в в "ancestor" ось также должна учитываться, и это будет выполнено с помощью следующего выражения XPath:

count($vNode/preceding::FootNoteReference
|
$vNode/ancestor::FootNoteReference)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...