Reputation: 105
Input:
<Root><output>
<queries>
<query name="Test">
<parameters>
<parameter>298674,298673,298675,298676</parameter>
</parameters>
<queryResults>
<record id="1">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709305</column>
</record>
<record id="2">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709301</column>
</record>
<record id="3">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709306</column>
</record>
<record id="4">
<column name="Order">268997</column>
<column name="Task">268756</column>
<column name="FirstAction">2709307</column>
</record>
<record id="5">
<column name="Order"/>
<column name="Task"/>
<column name="FirstAction">2709307</column>
</record>
</queryResults>
</query>
</queries></output>
How do I remove the record that has no values in clumn Order?
Desired output:
<Root><output>
<queries>
<query name="Test">
<parameters>
<parameter>298674,298673,298675,298676</parameter>
</parameters>
<queryResults>
<record id="1">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709305</column>
</record>
<record id="2">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709301</column>
</record>
<record id="3">
<column name="Order">272334</column>
<column name="Task">272093</column>
<column name="FirstAction">2709306</column>
</record>
<record id="4">
<column name="Order">268997</column>
<column name="Task">268756</column>
<column name="FirstAction">2709307</column>
</record>
</queryResults>
</query>
</queries></output>
My current XSL only removes the empty nodes
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(child::node())]"/>
And I can't seem to master the template match to remove the whole "Record" tag... Thank you very much!
Upvotes: 1
Views: 206
Reputation: 9627
Add one new template to remove the record that has no values in clumn Order
<xsl:template match="record[column[ @name='Order']= '']"/>
This match record which do not have a value in column with name Order and ignore them.
Upvotes: 1