This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Newbie Q: Style sheet for simple transform


<xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="agency">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()[not(starts-with(name(), 'custom_label'))] | *[starts-with(name(), 'custom_label')][1]"/>
</xsl:copy>
</xsl:template>

<xsl:template match="*[starts-with(name(), 'custom_label')]">
<custom_labels>
<xsl:copy-of select=". | following-sibling::*[starts-with(name(), 'custom_label')]"/>
</custom_labels>
</xsl:template>

If you remove the numbers from the element names, you can simplify the stylesheet a lot.

Joerg


Richard Rowell wrote:

I recieve a XML file structured like so:
<records>
<agencies>
<agency>
<name>Agency name</name> <description>test data - description of agency here</description>
<landmarks>landmark information here</landmarks>
<zips_served> <zip>32215</zip>
<zip>32202</zip>
</zips_served>
...(other data fields)
<custom_label1>customlabel1 name</custom_label1>
<custom_label2>customlabel2 name</custom_label2>
<custom_label3>label3</custom_label3>
<custom_label4>label4</custom_label4>
<custom_label5>label5</custom_label5>
...(other date fields)
</agency>
...(more agency records)
</agencies>
...(other types of records go here)
</records>

I would like to transform this file so that the custom_label fields
are contained in a <custom_labels> record like so:
...
<custom_labels>
<custom_label1>customlabel1 name</custom_label1>
<custom_label2>customlabel2 name</custom_label2>
<custom_label3>label3</custom_label3>
<custom_label4>label4</custom_label4>
<custom_label5>label5</custom_label5>
</custom_labels>
...

The rest of the file should just "pass through" unchanged. I'm positive
this is possible using an XSL processor (in my case Xalan), and I'm
fairly sure it will be very simple... But I'm having a hard time
grasping exactly what the style sheet should look like.

TIA
Richard Rowell
richard@bowmansystems.com

XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]