Сегодня я отправил еще один запрос о включении тегов, которые применяются к различным шаблонам, и я получил несколько ответов, которые помогли мне получить желаемый результат.Теперь у меня есть еще одна маленькая деталь, которую нужно решить.Мой XML выглядит так:
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<account>
<name>accountA</name>
</account>
<period>
<type>priormonth</type>
<balance>0.0000</balance>
</period>
<period>
<type>currentmonth</type>
<balance>20.0000</balance>
</period>
<account>
<name>accountB</name>
</account>
<period>
<type>priormonth</type>
<balance>30.0000</balance>
</period>
<period>
<type>currentmonth</type>
<balance>0.0000</balance>
</period>
</root>
Мой XSLT выглядит следующим образом:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/root">
<xsl:apply-templates select="account"/>
</xsl:template>
<xsl:template match="account">
<xsl:copy>
<xsl:copy-of select="name" />
<perioddata>
<xsl:copy-of select="following-sibling::period[position()<=2]" />
</perioddata>
</xsl:copy>
</xsl:template>
<xsl:template match="period">
<period>
<type> <xsl:value-of select="type"/> </type>
<balance>
<xsl:if test="balance != 0">
<xsl:value-of select="balance"/>
</xsl:if>
</balance>
</period>
</xsl:template>
</xsl:stylesheet>
Это дает следующий вывод:
<account>
<name>accountA</name>
<perioddata>
<period>
<type>priormonth</type>
<balance>0.0000</balance>
</period>
<period>
<type>currentmonth</type>
<balance>20.0000</balance>
</period>
</perioddata>
</account>
<account>
<name>accountB</name>
<perioddata>
<period>
<type>priormonth</type>
<balance>30.0000</balance>
</period>
<period>
<type>currentmonth</type>
<balance>0.0000</balance>
</period>
</perioddata>
</account>
Этот вывод в порядке, за исключением того, чтоЯ хочу, чтобы мои строки с:
<balance>0.0000</balance>
выглядели так:
<balance/>
Извинения за любые опечатки выше ... Я в основном просто печатал, а не вырезал / вставил.Я читал, что «copy-of» может совпадать с «value-of» и выводить текст, что может объяснить, почему предложение «if» не распознает нулевое значение.Я пытался сделать:
<xsl:if test="number(balance) != 0">
, но все равно не получил желаемых результатов.Спасибо.