xsl-list
[Top] [All Lists]

Re: [xsl] Unanticipated Results from text()

2007-02-23 11:12:15
While coding the XSLT stylesheet for IE, you cannot write logic that
depends on whitespace text nodes. Because, as Mike explained, with IE,
whitespace text nodes are stripped from source XML before the XML tree
is handed to the XSLT engine. This behaviour is observed only when we
use XSLT in IE using xml-stylesheet PI.

On 2/23/07, Signature House <systems(_at_)signaturehouse(_dot_)net> wrote:
Hi

I'm working on a project involving an XML import into the FileMaker DB package. 
I'm using Internet Explorer to do quickie proofing
on my stylesheets before using them in FM since FM is a bit of a kludge.

I got one bit working the way I wanted in IE, but got a different result when I 
moved it into FM.

Using the IE STYLESHEET and XML INPUT 1 below, I got IE RESULTS FROM BOTH 
INPUTS vs FM RESULTS FROM INPUT 1. The
"normalize-space(text())" picked up the B2 text in IE but didn't in FM.

I ran about a dozen different versions of the XML input, removing 1 or more 
line breaks from different places. IE always picked up
the B2 text; sometimes FM did, sometimes it didn't (see at FM RESULTS FROM 
INPUT 2 for one where FM did work).

Empirically, if <BBB><CCC> were on the same line, IE & FM returned the same results; if 
<BBB><CCC> were on separate lines, the
results were different.

I'm working on a PC running XP SP2, IE 6 SP2 and FM 8.03. FM says they're using 
an Xerces-based XML parser and an Xalan-based XSLT
processor (Xerces-C 1.6.0, Xalan-C 1.3.0). My stylesheets use the same XSLT, 
but for FM I have to remove the HTML and add a bunch of
required metadata. It's longish so I didn't include it but I can if someone 
needs to see it. The line breaks are the standard
Windows hex 0D 0A pair.

Does anybody have any suggestions as to what is going on?
- Is the placement of the B2 text valid XML?
- Is this a difference between IE & Xalan?
- What results should I expect - B2 or not B2? (Gee, I should have used 2B as 
the sample!)

Thanks in advance

Mike McBee
Signature House
systems(_at_)signaturehouse(_dot_)net
www.signaturehouse.net
304-842-3386


IE STYLESHEET
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="List Nodes - HTML.xsl"?>
<xsl:template match="/">
 <table>
   <tr><td>Name</td><td>Text</td><td>Period</td></tr>
   <xsl:for-each select="//*">
     <tr>
       <td><xsl:value-of select="name(.)"/></td>
       <td><xsl:value-of select="normalize-space(text())"/></td>
       <td><xsl:value-of select="normalize-space(.)"/></td>
   </tr>
   </xsl:for-each>
 </table>
</xsl:template>


XML INPUT 1
<?xml version="1.0"?>
<?xml-stylesheet?>
<AAA>
<BBB>
<CCC>
C1
</CCC>
B2
</BBB>
</AAA>


XML INPUT 2
<?xml version="1.0"?>
<?xml-stylesheet?>
<AAA><BBB><CCC>C1</CCC>B2</BBB></AAA>


IE RESULTS FROM BOTH INPUTS
Name  Text  Period
AAA         C1 B2
BBB   B2    C1 B2
CCC   C1    C1


FM RESULTS FROM INPUT 1
Name  Text  Period
AAA         C1 B2
BBB         C1 B2
CCC   C1    C1


FM RESULTS FROM INPUT 2
Name  Text  Period
AAA         C1 B2
BBB   B2    C1 B2
CCC   C1    C1


--
Regards,
Mukul Gandhi

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>