xsl, чтобы получить значение узла элемента и атрибут родительского узла
Я пытаюсь разместить в текстовом файле следующее:
<skos:Concept rdf:about="http://aims.fao.org/aos/agrovoc/c_26321">
<skos:prefLabel xml:lang="fa">آبیس ماریزیای</skos:prefLabel>
<skos:prefLabel xml:lang="zh">大白叶冷杉</skos:prefLabel>
<skos:prefLabel xml:lang="tr">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="th">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="sk">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="ru">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="pt">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="hi">एबीस मैरीइसी</skos:prefLabel>
<skos:prefLabel xml:lang="pl">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="lo">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="it">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="hu">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="de">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="cs">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="fr">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="es">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="en">Abies mariesii</skos:prefLabel>
<skos:prefLabel xml:lang="ja">オオシラビソ、アオモリトドマツ</skos:prefLabel>
<skos:prefLabel xml:lang="ar">شوح ماريزي</skos:prefLabel>
<skos:broader rdf:resource="http://aims.fao.org/aos/agrovoc/c_10"/>
Я просто хочу получить значение skos:prefLabel xml:lang="en" и значение атрибута skos:Concept rdf:about, поэтому оно будет преобразовано, как показано ниже:
=301 \\$abroader$bAbies mariesii$c=301 \\$abroader$bAbies mariesii
У меня есть ниже сценарий xslt, но я не могу преобразовать его правильно:
<?xml version="1.0" encoding="UTF-8"?>
....
<xsl:apply-templates select="skos:Concept" />
<xsl:text> </xsl:text>
....
<xsl:template match="skos:Concept">
<xsl:if test="skos:broader">
<xsl:for-each select="skos:prefLabel|skos:Concept" />
<xsl:text>=301 \\$abroader$b</xsl:text><xsl:value-of select="skos:prefLabel[@xml:lang='en']" /><xsl:text>$c</xsl:text><xsl:value-of select="skos:Concept[rdf:about]" />
<xsl:text> </xsl:text>
</xsl:if>
</xsl:template>
ТИА!
1 ответ
(* Для целей архивирования) Следующее решило мою проблему:
<xsl:template match="skos:Concept">
<xsl:if test="skos:broader">
<xsl:for-each select="skos:prefLabel|skos:Concept" />
<xsl:text>=301 \\$abroader$b</xsl:text><xsl:value-of select="skos:prefLabel[@xml:lang='en']" /><xsl:text>$c</xsl:text><xsl:value-of select="./@rdf:about" />
<xsl:text> </xsl:text>
</xsl:if>
Это был просто вопрос добавления однострочного кода. И это был ответ на вопрос об этом конкретном стековом потоке: получение атрибутов родительского узла в XSL