Я пытаюсь извлечь значения из моего файла RDF / XML, используя документ XSL. Выражение должно извлекать текстовое содержимое из элемента hasString из каждого элемента rdf: Description, ЕСЛИ элемент описания имеет значение атрибута type, равное «EnglishTerm» или «GermanTerm».
Выражение XPath:
rdf:RDF/rdf:Description[@type = '#EnglishTerm' or @type = '#GermanTerm']/hasString[text()]
Я использовал онлайновый тестер XPath и по какой-то причине работал только с одним веб-сайтом и не работал с другими. Я попытался использовать это в документе XSL, и это также не работало; XPath ничего не соответствует.
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="xml"/>
<xsl:template match="/">
<xsl:for-each select="rdf:RDF/rdf:Description">
<test>
<xsl:value-of select = "rdf:Description[@type = '#EnglishTerm' or @type = '#GermanTerm']/hasString[text()]"/>
</test>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
XML Фрагмент
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:ID="T000001" rdf:type="#EnglishTerm">
<hasConceptPreferredTermYN>Y</hasConceptPreferredTermYN>
<isPermutedTermYN>N</isPermutedTermYN>
<hasLexicalTag>LAB</hasLexicalTag>
<hasRecordPreferredTermYN>N</hasRecordPreferredTermYN>
<hasString rdf:parseType="Literal">A-23187</hasString>
<hasDateCreated>1990.03.08</hasDateCreated>
<hasAbbreviation/>
<hasSortVersion/>
<hasEntryVersion/>
<hasThesaurusID rdf:parseType="Literal">NLM (1991)</hasThesaurusID>
<hasTermNote/>
</rdf:Description>
</rdf:RDF>
Я хотел бы знать, что я могу сделать, чтобы исправить мой XPath выражение, чтобы оно работало с моим документом XSL.