Я преобразовал свой XML-файл, используя следующий XSLT-файл:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<catalog><xsl:for-each select="catalog/cd">
<cd>
<title><xsl:value-of select="title"/></title>
<artist><xsl:value-of select="artist"/></artist>
<country><xsl:value-of select="country"/></country>
<company><xsl:value-of select="company"/></company>
<price><xsl:value-of select="price"/></price>
<years>
<year><xsl:value-of select="year-1"/></year>
<year><xsl:value-of select="year-2"/></year>
<year><xsl:value-of select="year-3"/></year>
</years>
</cd>
</xsl:for-each></catalog>
</xsl:template>
</xsl:stylesheet>
Результат выглядит следующим образом:
<catalog><cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<years>
<year>1985</year>
<year>1986</year>
<year>1987</year>
</years>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<years>
<year>1988</year>
<year>1989</year>
<year></year>
</years>
</cd>
Я не хотел бы выводить TAG
<year></year>
Если поля отдельных полей год-1, год-2 или год-3 равны нулю
Я пробовал несколько программных кодов, которые я нашел в других публикациях, но все они, похоже, имеют проблемы счто можно использовать где.