Я пытался узнать, как кодировать в xslt и в настоящее время зацикливается на том, как использовать условные тесты вокруг тега xsl: apply-templates.Условный тест вокруг xsl: apply-templates
Вот xml, который я тестирую.
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
Вот мой XSLT
<xsl:template match="/">
<xsl:apply-templates select="catalog/cd" />
</xsl:template>
<xsl:template match="cd">
<p>
<xsl:apply-templates select="artist" />
<br />
<xsl:apply-templates select="country" />
<br />
<xsl:if test="country != 'USA' and year != '1985'">
<xsl:apply-templates select="year" />
</xsl:if>
</p>
</xsl:template>
<xsl:template match="artist">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="country">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="year">
<xsl:value-of select="." />
</xsl:template>
Вот мой результат:
Bob Dylan
USA
Bonnie Tyler
UK
1988
Dolly Parton
USA
Здесь выход я ожидал:
Bob Dylan
USA
Bonnie Tyler
UK
1988
Dolly Parton
USA
1982
Несмотря на то, что я хочу удалить год только тогда, когда страна имеет значение США, а год имеет значение 1985 года, он удаляет год каждый раз, когда страна имеет ценность только для США. Есть ли лучший способ использовать шаблоны-заявки?
Спасибо! Я не пробовал использовать функцию not. Также спасибо за информацию о логике. До сих пор кажется, что многие мои ошибки связаны с условиями. – Mdd