Я пытаюсь подсчитать количество совпадений конкретных людей внутри записей событий в XML-документе. Мой исходный документ состоит из элементов событий, которые содержат прозу в p-элементах и библиографических записях в элементах bibl, которые содержат ссылки на людей. Я хотел бы иметь возможность подсчитать, как часто два человека появляются в событиях во всем документе. Я использую XSLT 2.0, но могу переключиться на 3.0.XSLT для подсчета совпадений особых дочерних элементов
(как, например, я могу получить ответ 3 на количество раз, что Нэнси Дрю и Дик Трейси находятся в мероприятиях вместе ниже? Или 1 для Дика Трейси и Sam Spade?)
<listEvent>
<event xml:id="e1">
<p>pretium eget erat eu cursus. Duis pulvinar lectus sed quam vehicula tincidunt in
vel nunc. Cras convallis elementum diam. Sed nec viverra magna. Then <name
SameAs="detectives.xml#ND">Nancy Drew</name> solved the case. A consequat
tortor molestie ut. Praesent lobortis ipsum sit amet bibendum consequat. </p>
<bibl><name SameAs="detectives.xml#DT">Tracy, Dick</name>. The Mysterious Case of the
Orange Fish. Penguin Publishing. </bibl>
<bibl><name SameAs="detectives.xml#SH">Holmes, Sherlock</name>. The Case of the Blue
Carbuncle Penguin Publishing. </bibl>
</event>
<event xml:id="e2">
<p> facilisis turpis eu, gravida enim. Mauris adipiscing magna consequat dolor
auctor, sit amet tincidunt felis auctor. <name SameAs="detectives.xml#ND">Nancy
Drew</name> and <name SameAs="detectives.xml#DT">Dick Tracy</name> went into
business together. Aliquam pharetra semper erat, at viverra tellus vestibulum
quis. Sed facilisis convallis justo, suscipit fermentum lorem egestas nec.
Phasellus in aliquam eros, vitae fringilla augue </p>
<bibl><name SameAs="detectives.xml#TH">Hardy, Tom</name>. Growing Up Is Hard to Do:
The Story of a Boy Detective. Knopf Press. </bibl>
<bibl><name SameAs="detectives.xml#SH">Holmes, Sherlock</name>. The Case of the Blue
Carbuncle. Penguin Publishing. </bibl>
<bibl><name SameAs="detectives.xml#SH">Holmes, Sherlock</name>. The Hound of the
Baskervilles. Arsenal Press. </bibl>
</event>
<event xml:id="e3">
<p> Curabitur dapibus eu ligula sed elementum. Curabitur sit amet nisi dictum. <name
SameAs="detectives.xml#SS">Sam Spade</name> was the only detective in town.
Donec cursus diam sem, astor. </p>
<bibl><name SameAs="detectives.xml#TH">Hardy, Tom</name>. Growing Up Is Hard to Do:
The Story of a Boy Detective. Knopf Press. </bibl>
<bibl><name SameAs="detectives.xml#SS">Spade, Sam</name>. My Friends' Business
Ventures. Knopf Press. </bibl>
<bibl><name SameAs="detectives.xml#DN">Drew, Nancy</name>. Blonde and Curious.
Arsenal Press.</bibl>
</event>
<event xml:id="e4">
<p> Duis pulvinar lectus sed quam vehicula tincidunt in vel nunc. <name
SameAs="detectives.xml#ND">Nancy Drew</name> and <name
SameAs="detectives.xml#DT">Dick Tracy</name> made 110% profit that year. Cras
convallis elementum diam. Sed nec viverra magna. A consequat tortor molestie ut.
Praesent lobortis ipsum sit amet bibendum consequat. </p>
<bibl><name SameAs="detectives.xml#SS">Spade, Sam</name>. My Friends' Business
Ventures. Knopf Press. </bibl>
<bibl><name SameAs="detectives.xml#MH">Holmes, Mycroft</name>. Sons and Brothers.
Knopf Press. </bibl>
</event>
</listEvent>
@ michael.hor257k Мне нравится ваше мышление. Я надеюсь получить вывод, который выглядит следующим образом:
<gexf> <graph><nodes count="77">
<node id="1.0" label="Sam Spade"/>
<node id="2.0" label="Dick Tracy"/>
<node id="3.0" label="Nancy Drew"/>
…
</nodes>
<edges count="254">
<edge id="1" source="1.0" target="2.0" weight="1.0"/>
<edge id="2" source="1.0" target="3.0" weight="2.0"/>
<edge id="3" source="2.0" target="3.0" weight="3.0"/>
…
</edges>
</graph>
</gexf>
... где значение @weight является то, что у меня возникают проблемы вычислений.
Мне удалось назначить каждому человеку узел @id. Узел @ids затем составляет значения @source и @target (первый - Сэм Спейд и Дик Трейси, второй Сэм Спейд и Нэнси Дрю), а @weight должно быть количеством раз, когда они появляются вместе в документе (Я, возможно, ... возможно, упростил мой пример. В моем фактическом исходном документе есть несколько других атрибутов и значений в каждом элементе, включая @n для имени каждого человека, поэтому используйте значение-select для заполнения @ ids, @sources и @target были быстрыми).
@tim, не беспокойтесь, @SameAs указывает на список полномочий, так что независимо от того, как имя человека записано в тексте (то есть, Люси, мисс Грэхем и миссис Л. Фостер могли бы все быть именами в тексте для той же женщины, что и девочка, до того, как она вышла замуж и после нее, или наоборот, как это делается в библиографической записи), ее можно решить одним человеком.
ли вы имеете в виду вы хотите, чтобы изучить все возможные комбинации двух имен? Возможно, вам следует опубликовать пример того, как должен выглядеть вывод, по коду. –
У вас в вашем XML есть «Нэнси Дрю» и «Дрю, Нэнси». Вы ожидали бы, что к ним будут относиться как к другим именам? (Атрибут @SameAs отличается для них тоже). –
@ michael.hor257k Мне нравится ваше мышление.Результат должен выглядеть так: ' ... <края считаются = "254"> <край ID = "1" источник = "1.0" целевых = "2.0" вес = "1.0" /> ... /gefx> ' –
CLKC