У меня проблемы с получением общего количества элементов, которые я ищу с помощью ключа.
Существуют rdf:Description
элементы с атрибутом типа «#Concept» или другим, который не является понятием, таким как «#A».
rdf:Description
элементы, которые не имеют понятия типа, имеют дочерний элемент hasConcept
с атрибутом rdf:resource
, который содержит значение, соответствующее значению атрибута hasConceptUI/@rdf:resource
родительского элемента rdf:Description/@:rdf:type
«#A» - в качестве примера - сказано, что rdf:Descriptions
этого типа, имеет несколько элементов hasTerm.
Я бы хотел получить количество этих hasTerm
элементов, выбрав конкретную c не-концепцию rdf:Description
.
Есть несколько rdf:Description
rdf:type
"#A" элементов. Так что моя проблема в том, что я нахожу только счетчик для каждого из этих описаний, а не счетчик всех их.
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<xsl:output method="text"/>
<xsl:key name = "terms" match = "rdf:Description[@rdf:type = '#Concept']" use = "hasConceptUI"/>
<xsl:template match="/">
<xsl:apply-templates select="rdf:RDF/rdf:Description[@rdf:type = '#A']"/>
</xsl:template>
<xsl:template match = "rdf:Description[@rdf:type = '#A']">
<xsl:variable name = "test" select = "key('terms', substring(hasConcept/@rdf:resource, 2))"/>
<xsl:for-each select="$test/hasTerm">
<xsl:value-of select="concat(rdf:Bag/hasTermName/text(), '
')"/>
</xsl:for-each>
<xsl:value-of select="concat('Term Count: ', count($test/hasTerm), ' Position:', position(), '
', '
')"/>
</xsl:template>
<!-- Exclude Classes not matched -->
<xsl:template match="rdf:Description[@rdf:type != '#A']">
</xsl:template>
Образец XML
<rdf:Description rdf:ID="M0006190" rdf:type="#Concept">
<hasConceptUI>M0006190</hasConceptUI>
<hasTerm>
<rdf:Bag>
<hasTermUI>T011956</hasTermUI>
<hasTermName>Diagnostic Imaging</hasTermName>
</rdf:Bag>
</hasTerm>
<hasTerm>
<rdf:Bag>
<hasTermUI>T011955</hasTermUI>
<hasTermName>Imaging, Diagnostic</hasTermName>
</rdf:Bag>
</hasTerm>
</rdf:Description>
<rdf:Description rdf:ID="D010284" rdf:type="#C">
<hasParentRecord rdf:resource="#D012480" rdf:type="#C"/>
<hasConcept rdf:resource="#M0015934"/>
</rdf:Description>
Вот пример моего вывода в настоящее время с таблицей стилей выше:
Abdomen
Abdomens
Abdomen
Term Count: 3 Position:1
Abdominal Muscles
Abdominal Muscle
Muscle, Abdominal
Muscles, Abdominal
Bauchmuskeln
Term Count: 5 Position:2
Abducens Nerve
Nerve, Abducens
Sixth Cranial Nerve
Cranial Nerve, Sixth
Nerve, Sixth Cranial
Nerves, Sixth Cranial
Sixth Cranial Nerves
Nerve VI
(deleted terms here for brevity)
Nerve VIs, Cranial
Nervus abducens
Hirnnerv VI
VI. Hirnnerv
Term Count: 23 Position:3
Abomasum
Abomasums
Labmagen
Term Count: 3 Position:4
Acanthocytes
Acanthocyte
Akanthozyten
Term Count: 3 Position:5
Есть ли в любом случае, я могу получить подсчет всех терминов в документе, используя мой ключ, в отличие от того, как он теперь рассчитывает только просмотрены термины в формате rdf: описание (не являющиеся понятиями). Я ценю любую помощь.