Subject:Selecting child nodes to output Author:Andrea Berman Date:12 Jan 2006 03:26 PM
I have two places where the same data is displayed but there are different rules for each place as to how they are displayed.
Place #1 has a template, matching on the node name, and is the main display for the data on the page.
Place #2 takes the same data, but only *part* of it and its child nodes, and leaves out the rest of the child nodes.
Let me try to illustrate this as an example.
<mainnode>
<parentnode1>
Lots of text <child_node1>with flashing colors</child_node1>!
<child_node2>really really long paragraph that goes on forever and a day</child_node2>
</parentnode1>
<parentnode2>
etc...
</parentnode2>
</mainnode>
One section will display everything in parentnode1, and another section will only display the text plus child_node1, but not child_node2. I have a template match to do the entire display (it's recursive and multiple nodes of the same name can be under child nodes) and am trying to figure out how to do the section that only displays the text plus child_node1. Is this possible?
Note: I do have a separate section for using the "mode" attribute as suggested on another forum, but no one so far has helped me with only outputting particular child nodes versus others.
Subject:Selecting child nodes to output Author:Tony Lavinio Date:12 Jan 2006 04:46 PM
It's too hard to tell from what you've given; if you want to send
the actual files, you can send to stylus-field-report (at) progress.com
Is this a Stylus Studio related question? Or an XSLT question in
general? We like to help, but hard questions that aren't Stylus
related get pushed to the back burner when things get busy.
Subject:Selecting child nodes to output Author:Andrea Berman Date:13 Jan 2006 10:38 AM Originally Posted: 13 Jan 2006 10:25 AM
It is an XSLT question in general, and I found this forum while looking for a good XML editor. Is there a trial version, and if so, does it expire?
This is code I'm doing at work, so emailing you the files is rather out of the question. But I can show you the part of the code that is giving me the trouble:
<mainnode>
<parentnode1>
Lots of text
<child_node2>really really long paragraph that goes on forever and a day></child_node2>
</parentnode1>
<parentnode2>
etc...
Here's what I have so far, but it only outputs the text, and completely ignores ALL of the rest of the nodes, and I need child_node1:
<xsl:apply-templates select="parentnode1" mode="chk_value" />
..
<xsl:template match="parentnode1" mode="chk_value">
<xsl:apply-templates mode="chk_value"/>
</xsl:template>
<xsl:template match="text()" mode="chk_value">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="child_node1" mode="chk_value">
<xsl:choose>
<xsl:when test="@role='bold'">
<b><xsl:value-of select="." /></b>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="." />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="child_node2" mode="chk_value" />
<xsl:template match="child_node3" mode="chk_value" />
Hope this helps! And thanks....
Subject:Selecting child nodes to output Author:Tony Lavinio Date:13 Jan 2006 10:51 AM
The link that was posted does point to a trial version. It does
expire eventually, but it is a fully-functional version.
To copy nodes with all children, try xsl:copy-of. I'd get rid
of the template that matches text(); it doesn't help anything.
xsl:copy-of won't trigger template matching, so you can be
assured you'll get the full output. Remember that using xsl:value-of
just outputs the string value, not the nodes themselves.
To copy nodes with selected children, do the apply-templates,
and have templates to catch and process just the elemnts you care
about. To "eat" an element, just use <xsl:template match="blah"/>.
As for choosing XML IDEs, there is only one choice. :) I'm not
naming any names, but it begins with Stylus...
Subject:Selecting child nodes to output Author:Andrea Berman Date:13 Jan 2006 11:14 AM
Yeah, I'm using the text node to process the text in order to remove bad characters (there's this annoying "&#xD;&#xA;" string that keeps showing up).
So, use copy-of instead of the xsl:apply-templates mode="chk_value" tag? I'll give it a shot!
I downloaded the trial version. If I can get my coworkers in on it and depending on costs we might be able to convince IT to purchase the license. In the meantime, I'll have fun with it. :)