У меня есть XML, как это:Не удается получить правильный вывод XSLT
<Section>
<Chapter>
<Head>Heading</Head>
<nametable>
<nametitle>MyTitle</nametitle>
<namedomain>MyDomain</namedomain>
<namevalue>value1</namevalue>
</nametable>
<nametable>
<nametitle>MyTitle2</nametitle>
<namedomain>MyDomain2</namedomain>
<namevalue>value2</namevalue>
</nametable>
</Chapter>
</Section>
я хотел бы получить этот результат:
MyTitle2
MyDomain2
value2
Я использовал text()
функцию для проверки текста но ничего не печатает.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="//Chapter">
<xsl:comment>Ignore Head tag</xsl:comment>
<xsl:apply-templates select="*[not(self::Head)]"/>
</xsl:template>
<xsl:template match="nametable">
<xsl:for-each select="nametitle">
<xsl:if test="text()='MyTitle2'">
<xsl:apply-templates select="nametitle" />
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="nametitle">
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
Что я сделал не так?.
Спасибо !.
Джон
Спасибо, я ценю вашу помощь !. – JohnX
@JohnX: Я рад, что мой ответ был полезен для вас. Пожалуйста, подумайте о принятии этого ответа (подсказка: нажав галочку рядом с ответом). –
У меня есть один вопрос, если я заменил ' ' На ' ' и предоставил соответствие шаблону для nametitle (который содержит ) ваше решение будет печатать MyTitle вместо MyTitle2. Мне интересно, почему это потому, что проверка - MyTitle2. –
JohnX