|
Subject: RE: [xsl] Unwanted New Line on Output From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 18 Jun 2007 11:13:24 +0100 |
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.duck@xxxxxxxxx]
> Sent: 18 June 2007 10:49
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Unwanted New Line on Output, Matt | Thread | Re: [xsl] Unwanted New Line on Outp, Manfred Staudinger |
| Re: [xsl] grouping-problem, Annina . Hirschi-Wys | Date | Re: [xsl] Unwanted New Line on Outp, Manfred Staudinger |
| Month |