Seconded. Perl is my tool of choice, but for this problem XSLT is the right way.
Update: Added stylesheet
<?xml version='1.0' ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" versi
+on="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:preserve-space elements="*" />
<xsl:template match="/businesses">
<xsl:copy>
<xsl:for-each select="./entity">
<block>
<xsl:attribute name="name">
<xsl:value-of select="./@name" />
</xsl:attribute>
<xsl:attribute name="min">
<xsl:value-of select="./child::product/@min" />
</xsl:attribute>
<xsl:attribute name="max">
<xsl:value-of select="./child::product/@max" />
</xsl:attribute>
<xsl:for-each select = ".//description">
<xsl:if test="name(./parent::*)!='item'">
<xsl:copy>
<xsl:value-of select = "." />
</xsl:copy>
</xsl:if>
</xsl:for-each>
<xsl:for-each select = ".//item">
<xsl:copy-of select="." />
</xsl:for-each>
</block>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
|