It would be better to wrap the department number in its own element:
<DEPT>
<DEPT_NR>1</DEPT_NR>
<EMPS>
<EMP_NAME> Fred Bloggs</EMP_NAME>
<EMP_AGE> 25 </EMP_AGE>
</EMPS>
or if you prefer, in an attribute:
<DEPT NR="1">
<EMPS>
<EMP_NAME> Fred Bloggs</EMP_NAME>
<EMP_AGE> 25 </EMP_AGE>
</EMPS>
I can't actually explain the output you're getting, because if the template
is invoked with DEPT as the context node, then <xsl:value-of select="DEPT"/>
will select nothing (DEPT does not have a child called DEPT), while if it is
called with DEPT_DETAILS as the context node, it will select a string such
as
\n 1 \n \n \Fred Bloggs \n 25 \n \n \n Joe Smith \n 35 ....
where \n is a newline.
If you can't redesign the XML, then you can pick up the department number
(with DEPT as the context node) using normalize-space(text()[1])
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Matt [mailto:puskas(_dot_)duck(_at_)gmail(_dot_)com]
Sent: 18 June 2007 10:49
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Unwanted New Line on Output
Morning list!
I have the following XML structure:
<DEPT_DETAILS>
<DEPT>
1
<EMPS>
<EMP_NAME> Fred Bloggs</EMP_NAME>
<EMP_AGE> 25 </EMP_AGE>
</EMPS>
<EMPS>
<EMP_NAME> Joe Smith</EMP_NAME>
<EMP_AGE> 35 </EMP_AGE>
</EMPS>
</DEPT>
<DEPT>
2
<EMPS>
<EMP_NAME> Jill Bloggs</EMP_NAME>
<EMP_AGE> 19 </EMP_AGE>
</EMPS>
<EMPS>
<EMP_NAME> Gerry Halliwell</EMP_NAME>
<EMP_AGE> 45 </EMP_AGE>
</EMPS>
</DEPT>
</DEPT_DETAILS>
I want the following output (as text):
1 Fred Bloggs
1 Joe Smith
2 Jill Bloggs
2 Gerry Halliwell
So my template looks something like:
<xsl:apply-template mode="depts" select="DEPT_DETAILS/DEPT"/>
<xsl:template mode="depts" match="*">
<xsl:param name="deptID" select="DEPT"/>
<xsl:for-each select="EMPS">
<xsl:value-of select="$deptID"/>
<xsl:value-of select="EMP_NAME"/>
<xsl:text> </xsl:text> <!-- Add CR -->
</xsl:for-each>
</xsl:template>
But the output I am getting is along the lines of:
1
Fred Bloggs
1
Joe Smith
2
Jill Bloggs
2
Gerry Halliwell
With the emp name being on a second line. Is this caused
because the dept_id is at a higher level in the XML
structure? Is this a problem with my select="DEPT" actually
selecting something more than just the ID for the department.
Any answers/suggestions appreciated....
Matt
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--