Page 1 of 1

Re: split xml based on node name - SOLVED

Posted: Mon Oct 01, 2018 7:07 pm
by abonsey
Hi All,
I'm trying to split an xml into individual orders but cannot get it to split and use the required name. See below for sample xml and xslt

What I'm trying to do is split and save based on "Design Number" ie GC155 but I can't get the XSLT to see that field name.
I believe I'm almost there but cannot see the simple mistake I'm making.

Can you help me out please.

TIA
Andrew

XML
<?xml version="1.0" encoding="UTF-8"?>
<csv entries="37">
<entry num="1">
<field name="Design Number">GC155</field>
<field name="Range">Christmas</field>
<field name="Envelope Colour"></field>
<field name="ize">150x150</field>
<field name="QUANTITY ORDERED">60</field>
<field name="PRINTED"></field>
</entry>

XSLT
<xsl:template match="/csv/entry">
<xsl:result-document method="xml" href="{/field/[@name="Design Number"]/value}.xml">
<xsl:copy-of select="." />
</xsl:result-document>
</xsl:template>

Re: split xml based on node name - SOLVED

Posted: Thu Oct 04, 2018 10:38 am
by abonsey
With the help of Enfocus this is now solved.
Below is the correct coding for those that are interested:

You always have to bear in mind where the Xpath pointer is when you use href. The pointer is at /csv/entry, and as “field” is just below “entry” there must be no slash. The slash takes the pointer back to the top of the XML and at that point there is no “field”.

When selecting a specific tag it is immediately followed by [, not /[.

The href is in double quotes, so inside the double quotes you have to use single quotes.

There is no “value” tag below "field"

<xsl:result-document method="xml" href="{field[@name='Design Number']}.xml”>


Andrew

Re: split xml based on node name - SOLVED

Posted: Mon Mar 18, 2019 9:47 am
by risha
Really great information share with us