У меня есть следующий XSL, который преобразует файл XML и в основном выравнивает его (удаляет все подузлы). Однако я не думаю, что это очень эффективно, например, если нет данных для элемента, мой XSL все равно распечатает вмещающие теги, однако, что было бы действительно хорошо, если бы он не выводил какие-либо теги, если в них не было данных XML-файл. Просто интересно, может ли кто-нибудь взглянуть и указать мне правильное направление, пожалуйста?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="/*">
<broadWorksCDR>
<xsl:for-each select="cdrData">
<cdrData>
<serviceProvider><xsl:value-of select="headerModule/serviceProvider" /></serviceProvider>
<type><xsl:value-of select="headerModule/type" /></type>
<eventCounter><xsl:value-of select="headerModule/recordId/eventCounter" /></eventCounter>
<systemId><xsl:value-of select="headerModule/recordId/systemId" /></systemId>
<date><xsl:value-of select="headerModule/recordId/date" /></date>
<systemTimeZone><xsl:value-of select="headerModule/recordId/systemTimeZone" /></systemTimeZone>
<userNumber><xsl:value-of select="basicModule/userNumber" /></userNumber>
<groupNumber><xsl:value-of select="basicModule/groupNumber" /></groupNumber>
<direction><xsl:value-of select="basicModule/direction" /></direction>
<callingNumber><xsl:value-of select="basicModule/callingNumber" /></callingNumber>
<callingNumberContext><xsl:value-of select="basicModule/callingNumberContext" /></callingNumberContext>
</cdrData>
</xsl:for-each>
</broadWorksCDR>
</xsl:template>
</xsl:stylesheet>