Greetings.
This is a long posting, and is follow-up to my question of a week back.
Below, I have words of thanks for those who ventured a response;
a mini-Table-Of-Contents for this posting (!); the pasted in full code
(4 files); an entire "Results Matrix"; and a set of URL links to the
earlier XSL-List postings.
There is a "Question" in here (near the top!), the answer to which may be:
- one of those one-liners I can never think of (à la empty nodeset is
select='/..'),
- a simple admonition, "Don't Do It That Way",
- or maybe something that'll help me better understand RTFs, nodesets, and
testing for "empty" results.
Or, of course, may be something else entirely... :>)
Many Thanks,
William Reilly
wreilly(_at_)digitas(_dot_)com
Boston, Massachusetts U.S.A.
=== Briefest Possible (!?) Summary =======================
1.) First, no great surprise, I was in the wrong re: my original question.
I had the _wrong_ xsl:when test (!!) (details below).
So, that part I now understand. Lesson Learned. Good.
2.) *However*, while working on all this, I have come upon a new
(closely related) question:
Q. "What is the correct test to catch the following data error (empty/no
results)?" <<<
[ Attempt at pre-emptive guess: I think I may have some sort of
"impedance mismatch" (?), as I am trying to test a variable built up
as an RTF, but using a test I call "nodeset presence"
(<xsl:when test="$msg-fill-contents">). It's not working;
and I don't know what test would work.
*(Please see also "Important Testing Note" ~50 lines below) ]
[ If the simple answer is: "Don't Do That" (impedance stuff), then that's
fine.
I _do_ now have another solution that _does_ work (nodesets, instead of
RTF).
I'm just seeking to understand this puzzle a little better... :>} ]
maindatafile.xml
----------------
<main-msg name="hdr-logo"/>
lookupfile.xml
----------------
<msg name="hdr-logo">
<segment name="CALIFORNIA_BROKEN-WRONG-LOOKUP-DATA">
<markup>
<img src="california.gif"/>
</markup>
</segment>
</msg>
lookup-msginfo_2-html.xslt
--------------------------
<xsl:variable name="segment" select="'CALIFORNIA'"/>
<xsl:template match="main-msg">
<xsl:variable name="msg-name" select="@name"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++
Yes, this is the RTF way to build the variable.
Yes, I know 'select' nodeset way is better.
Bear with me a moment. :>)
++++++++++++++++++++++++++++ -->
<xsl:variable name="msg-fill-contents">
<xsl:for-each select="document($lookupfilename)//msgs/msg">
<xsl:apply-templates
select="self::node()[(_at_)name=$msg-name]/segment[(_at_)name=$segment]/markup/node()"/>
</xsl:for-each>
</xsl:variable>
<!-- +++++++++++++++++++++++++++++++++++++++++++++++
QUESTION HERE: WHAT TEST WILL CATCH THAT WE HAVE "BROKEN" LOOKUP DATA?
+++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- +++ "Nodeset Presence" test: NOT working. +++ -->
<xsl:when test="$msg-fill-contents">
<xsl:copy-of select="$msg-fill-contents"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>WARNING: $msg-fill-contents lookup came back EMPTY,
apparently.</xsl:text>
</xsl:otherwise>
</xsl:template>
++++++++++++++++++++++++++++++++++++++++++++++++++
*Important Testing Note:
This alternative test ("Empty Text") WILL catch the stated problem (hooray),
<!-- +++ "Empty Text" test:
<xsl:when test="not($msg-fill-contents='')"> +++ -->
***BUT*** this same test is **NOT** then good for the _other_ data problem you
might encounter (boo), namely the one I _originally_ wrote in about:
<markup><img src="california.gif"/></markup>
or what I term "Empty Element Only Content (NO Whitespace)".
This second test FAILS on that (aarghh).
So, what I'm _REALLY_ looking for is the test that'll do _BOTH_
(if I can find one!). <<
[Why? you might ask.
I guess I'd have to say this falls into the "I'd just like to find out"
category.]
[ By the way, yes I'm testing on recent
Xalan (j2sdk1.4.1_01) and Saxon (Instant 6.5.2) ]
++++++++++++++++++++++++++++++++++++++++++++++++++
Output Results
(did not work right! did not catch the data error! (by my test, anyway))
------------------------------------
This is what (below, in Results Matrix) I call "FAIL CASE #2"
I. B. 2. a. = RTF variable | Nodeset test | BROKEN Lookup | WITHSpace
SHOULD NOT GO THROUGH!! **TEST FAILS**
It does *Not* get caught (by my test, anyway)! Bad.
(As you can see in the debug output's "$msg-fill-contents copy-of",
there is nothing in there (?). So why doesn't the test catch that?
Must be some lingering node in there, or some such??...)
DEBUG: WE ARE INSIDE xsl:when test="$msg-fill-contents" was TRUE, apparently.
$MSG-NAME: [hdr-logo]
$MSG-FILL-CONTENTS VALUE-OF: []
$MSG-FILL-CONTENTS COPY-OF: []
=== /End of Briefest Possible (!?) Summary ==============================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TABLE OF CONTENTS (!)
1. Intro, explanation
2. 4 Code Files: XML data file; XML lookup file; XSLT; HTML.
3. Results Matrix (four-level hierarchy of test permutations)
4. "Bibliography" (!) of URL links to related earlier XSL-List postings
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INTRO, EXPLANATION
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This posting contains all info for the original question:
William Reilly 2nd e-mail [Wed, 23 Apr 2003 17:30:01 -0400]
Subj: RE: [xsl] xsl:copy-of O.K. on RTF, but nothing on <EMPTY/> element
content (?)
http://www.biglist.com/lists/xsl-list/archives/200304/msg01138.html
That original question is now resolved, as I had the wrong xsl:when test!
I do want to thank Wendell Piez (twice!) and Michael Kay for responding to my
rather odd, almost off-putting & bald-faced query:
+++++++++++++++++++++++++++++++++++++++++++
CODE #1:<markup> <img src="pic.gif"/></markup>
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
CODE #2:<markup><img src="pic.gif"/></markup>
++++++++++++++++++++++++++++++++++++++++++
asking why a single space character difference was causing me (I thought)
erroneous output. Fact is, I was testing it erroneously.
Lesson Learned: If you're going to test, make sure you're running
the right test (!).
<!-- FLAWED TEST <xsl:when test="not($msg-fill-contents='')"> -->
<!-- CORRECT TEST --> <xsl:when test="$msg-fill-contents">
I also want to say thanks for the "code tightening" advice. Very useful
instruction, and helpful; I now have improved XPath, and a nodeset,
no longer RTF.
Finally, thanks to many recently writing in for a lot of good learning on
RTF vs. nodesets generally.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CODE: 4 FILES (XML data file; XML lookup file; XSLT; HTML output)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. MAINDATAFILE.XML
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=== maindatafile.xml =====================================================
<?xml version="1.0" encoding="UTF-8"?>
<!-- maindatafile.xml
Author: William Reilly, wreilly(_at_)digitas(_dot_)com
May 1, 2003 -->
<main>
<div id="td01">
<main-msg name="hdr-logo"/>
</div>
<div id="td02">
<main-msg name="hdr-nav"/>
</div>
<div id="body">
<p>As an Acme Bank <main-msg name="which-checking-account"/> checking
customer,
you may want to consider <main-msg name="which-maximizer-product"/>.</p>
</div>
</main>
=== /maindatafile.xml =====================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2. LOOKUPFILE.XML
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=== lookupfile.xml ========================================================
<?xml version="1.0" encoding="UTF-8"?>
<!-- lookupfile.xml
Author: William Reilly, wreilly(_at_)digitas(_dot_)com
May 1, 2003 -->
<msgs>
<msg name="hdr-logo">
<!-- THREE VARIATIONS ON ONE <SEGMENT> INSTANCE: -->
<!-- Lookup "Correct"; WITHSpace -->
<segment name="CALIFORNIA">
<markup> <img src="acmebank.gif" alt="Acme Bank"/></markup>
</segment>
<!-- Lookup "Correct"; WITHOUTSpace
<segment name="CALIFORNIA">
<markup><img src="acmebank.gif" alt="Acme Bank"/></markup>
</segment>
-->
<!-- Lookup "Broken"; (WITHSpace or WITHOUTSpace same results)
<segment name="CALIFORNIA_BROKEN-LOOKUP-SEGMENT-NAME_SHOULD-NOT-WORK">
<markup><img src="acmebank.gif" alt="Acme Bank"/></markup>
</segment>
-->
<!-- /End - THREE VARIATIONS ON ONE <SEGMENT> INSTANCE: -->
<!-- other segments... -->
<segment name="OREGON">
<markup>
<img src="acmebank.gif" alt="Acme Bank"/>
</markup>
</segment>
</msg>
<msg name="hdr-nav">
<segment name="CALIFORNIA">
<markup>
<img src="california-nav.gif" alt="Find It (California)
Navigation"/>
</markup>
</segment>
<segment name="OREGON">
<markup>
<img src="oregon-nav.gif" alt="Contact Us (Oregon) Navigation"/>
</markup>
</segment>
</msg>
<msg name="which-checking-account">
<segment name="CALIFORNIA">
<markup>
<b>PremiumGold</b>
</markup>
</segment>
<segment name="OREGON">
<markup>
<b>AdvantageGreen</b>
</markup>
</segment>
</msg>
<msg name="which-maximizer-product">
<segment name="CALIFORNIA">
<markup>an <a
href="http://www.acmebank.com/interest-max.html">Interest Maximizer
account</a>.</markup>
</segment>
<segment name="OREGON">
<markup>a <a href="http://www.acmebank.com/money-max.html">Money
Maximizer account</a>, free of the monthly maintenance fee.*</markup>
</segment>
</msg>
</msgs>
=== /lookupfile.xml ========================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3. LOOKUP-MSGINFO_2-HTML.XSLT
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=== lookup-msginfo_2-html.xslt ===============================================
<?xml version="1.0" encoding="UTF-8"?>
<!-- lookup-msginfo_2-html.xslt
Author: William Reilly, wreilly(_at_)digitas(_dot_)com
May 1, 2003
One Stylesheet with matrix of Four Combinations (comment out as appropriate):
- Variable either RTF 'build up' or Nodeset 'select'
- then, "xsl:when test" either "Empty Text" or "Nodeset Presence"
(Currently: RTF 'build up' + "Nodeset Presence" test.)
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<!-- Would normally be params, not 'hard-coded' variables. (Note these are
'text strings'!) -->
<xsl:variable name="lookupfilename" select="'lookupfile.xml'"/>
<xsl:variable name="segment" select="'CALIFORNIA'"/>
<xsl:variable name="debugging" select="'true'"/>
<!-- <xsl:variable name="debugging" select="'false'"/> -->
<xsl:template match="/">
<html>
<head/>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="main">
<table border="0" cellpadding="0" cellspacing="0" width="560">
<tr>
<td>
<xsl:apply-templates select="div[(_at_)id='td01']"/>
</td>
<td>
<xsl:apply-templates select="div[(_at_)id='td02']"/>
</td>
</tr>
</table>
<div>
<xsl:apply-templates select="div[(_at_)id='body']"/>
</div>
</xsl:template>
<xsl:template match="b">
<span style="font-weight:bold; ">
<xsl:apply-templates/>
</span>
</xsl:template>
<xsl:template match="p">
<p style="padding-left:20; ">
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="img">
<xsl:element name="img">
<xsl:copy-of select="@*"/>
</xsl:element>
</xsl:template>
<!-- NODESET 'SELECT' APPROACH TO CREATING VARIABLE.
STEP 1.
[!== W. Piez: "Binds the set of msg nodes to the variable, once, globally
==]
<xsl:variable name="messages"
select="document($basedir_span-fillLookupFilenameExt)//msgs/msg"/>
-->
<xsl:template match="main-msg">
<xsl:variable name="msg-name" select="@name"/>
<!-- NODESET 'SELECT' APPROACH TO CREATING VARIABLE.
STEP 2.
[!== W. Piez "tightened up code..." ==]
<xsl:variable name="msg-fill-contents"
select="$messages[(_at_)name=$msg-name]/segment[(_at_)name=$segment]/markup"/>
-->
<!-- RTREEFRAG 'BUILD UP' APPROACH TO CREATING VARIABLE. -->
<xsl:variable name="msg-fill-contents">
<xsl:for-each select="document($lookupfilename)//msgs/msg">
<xsl:apply-templates
select="self::node()[(_at_)name=$msg-name]/segment[(_at_)name=$segment]/markup/node()"/>
</xsl:for-each>
</xsl:variable>
<xsl:choose>
<!-- +++++++ TEST # 1 ++++++++++++++++++++++++++ -->
<!-- "EMPTY-TEXT" MODE OF TESTING.
<xsl:when test="not($msg-fill-contents='')">
<xsl:if test="$debugging='true'">
<xsl:text>DEBUG: WE ARE INSIDE xsl:when
test="not($msg-fill-contents='')" was TRUE, apparently.</xsl:text>
<xsl:text>$MSG-NAME: </xsl:text> [<xsl:value-of
select="$msg-name"/>]
<xsl:text>$MSG-FILL-CONTENTS VALUE-OF: </xsl:text> [<xsl:value-of
select="$msg-fill-contents"/>]
<xsl:text>$MSG-FILL-CONTENTS COPY-OF: </xsl:text> [<xsl:copy-of
select="$msg-fill-contents"/>]
</xsl:if> -->
<!-- Comments: Succeeds WITHSpace, but Fails WITHOUTSpace.
Note: Yes, by the way, this test WILL work correctly if the Lookup file is
"Broken,"
that is, when there is NOT a match on 'segment' or on 'msg'.
(See discussion at Test # 2 below)
-->
<!-- +++++++ TEST # 2 ++++++++++++++++++++++++++ -->
<!-- "NODESET-PRESENCE" MODE OF TESTING. -->
<xsl:when test="$msg-fill-contents">
<xsl:if test="$debugging='true'">
<xsl:text>DEBUG: WE ARE INSIDE xsl:when
test="$msg-fill-contents" was TRUE, apparently.</xsl:text>
<xsl:text>$MSG-NAME: </xsl:text> [<xsl:value-of
select="$msg-name"/>]
<xsl:text>$MSG-FILL-CONTENTS VALUE-OF: </xsl:text>
[<xsl:value-of select="$msg-fill-contents"/>]
<xsl:text>$MSG-FILL-CONTENTS COPY-OF: </xsl:text> [<xsl:copy-of
select="$msg-fill-contents"/>]
</xsl:if>
<!-- Comments: Succeeds BOTH WITHSpace and WITHOUTSpace. Good, but...
****** HOWEVER! ***********
This test was NOT catching when the Lookup File is "Broken." (!)
That is, when there is NOT a match on 'segment' or on 'msg'.
[ Please Note: No, in theory this "broken" situation should not occur.
BUT, it could, and it's the most critical situation to guard against (!),
namely: the Main and Lookup files getting out of synch. ]
-->
<span style="background-color:#D2E9FF; ">
<xsl:copy-of select="$msg-fill-contents"/>
<!-- <xsl:apply-templates select="$msg-fill-contents"/> -->
</span>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$debugging='true'">
<!-- TEST # 1 <xsl:text>DEBUG: XSL:OTHERWISE xsl:when
test="not($msg-fill-contents='')" was FALSE, apparently.</xsl:text> -->
<!-- TEST # 2 --> <xsl:text>DEBUG: XSL:OTHERWISE xsl:when
test="$msg-fill-contents" was FALSE, apparently.</xsl:text>
<xsl:text>$MSG-NAME: </xsl:text> [<xsl:value-of
select="$msg-name"/>]
<xsl:text>$MSG-FILL-CONTENTS VALUE-OF: </xsl:text> [<xsl:value-of
select="$msg-fill-contents"/>]
<xsl:text>$MSG-FILL-CONTENTS COPY-OF: </xsl:text> [<xsl:copy-of
select="$msg-fill-contents"/>]
</xsl:if>
<xsl:text>WARNING: $msg-fill-contents lookup came back EMPTY,
apparently.</xsl:text>
<xsl:message>WARNING: $msg-fill-contents lookup came back EMPTY,
apparently.</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
=== /lookup-msginfo_2-html.xslt =========================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4. (output) RTF_NODE-TEST_BROKENLOOKUP_WITHSPACE_XALAN_DEBUGOFF.HTML
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=== rtf_node-test_brokenlookup_withspace_XALAN_debugoff.html =================
<html>
<head>
<!-- rtf_node-test_brokenlookup_withspace_XALAN_debugoff.html
Author: William Reilly, wreilly(_at_)digitas(_dot_)com
May 1, 2003
FAIL CASE #2 (THIS IS THE MOST INTERESTING "FAIL". WHY DOES IT FAIL?)
I. B. 2. a. = RTF | Nodeset | BROKEN Lookup | WITHSpace
-->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<table width="560" cellspacing="0" cellpadding="0" border="0">
<tr>
<!-- NOTE: THIS *COMMENTED-OUT* <TD> (pasted in from _*another*_ run's
output) IS HOW A _CORRECT_ TEST WOULD REPORT ON "BROKEN" LOOKUP.
Good. "OK"
<td>
WARNING: $msg-fill-contents lookup came back EMPTY, apparently.
</td>
-->
<td> <!-- WHEREAS _THIS_ <TD> (from _this_ run) _MISSES_ THE PROBLEM AND
FAILS TO REPORT IT. Bad. "FAIL"-->
<span style="background-color:#D2E9FF; "></span>
</td><td>
<span style="background-color:#D2E9FF; ">
<img src="california-nav.gif" alt="Find It (California) Navigation">
</span>
</td>
</tr>
</table>
<div>
<p style="padding-left:20; ">As an Acme Bank <span
style="background-color:#D2E9FF; ">
<span style="font-weight:bold; ">PremiumGold</span>
</span> checking customer,
you may want to consider <span style="background-color:#D2E9FF; ">an Interest
Maximizer account.</span>.</p>
</div>
</body>
</html>
=== /rtf_node-test_brokenlookup_withspace_XALAN_debugoff.html =================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/END of CODE
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RESULTS MATRIX
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
******************* !!PLEASE!! NOTE ****************************************
- The "OK" or "FAIL" used here below mean: *** "Did The Test Do The Right
Thing" ***.
That is, it either
- "OK" = correctly caught a problem, or correctly let through O.K. data.
Good. "OK"
or, it:
- "FAIL" = incorrectly let through a problem, or incorrectly prevented
O.K. data from going through. Bad. "FAIL"
- These "OK" and "FAIL" are *** NOT *** to be interpreted as
- "The xsl:when test returned boolean true" (or false). NO.
- "The transformation ran to successful completion" (or not). NO.
They mean whether or not the test "did the right thing."
**************************************************************************
Three things to note >>>>>>>>>:
I. A. 1. b. -was the original problem I first reported; now understood.
I. B. 2. a. -is the "most interesting" FAIL: I'd like to learn the
proper 'test' for it.
II. B. (1. b.) -is obviously the best solution: 'select' a nodeset variable;
then test for "nodeset presence."
========================================================================
I. RTF APPROACH ('built up' variable)
A. "EMPTY-TEXT" Test <xsl:when test="not($msg-fill-contents='')">
1. with... Correct Lookup?
a. WITHSpace? OK
b. WITHOUTSpace **FAIL** #1 (This was the original problem;
now understood: I had the wrong test!)
2. with... BROKEN Lookup? (Broken lookup fails first, and is correctly
CAUGHT by the test. Good.)
a. WITHSpace? OK
b. WITHOUTSpace OK
B. "NODESET PRESENCE" Test <xsl:when test="$msg-fill-contents">
1. with... Correct Lookup?
a. WITHSpace? OK
b. WITHOUTSpace OK = INTERESTING SUCCESS CASE (second rank)
2. with... BROKEN Lookup? (Broken lookup should fail (!) first, BUT is
incorrectly MISSED (by my test, anyway). Bad.)
a. WITHSpace? **FAIL** #2 (THIS IS THE MOST INTERESTING
"FAIL".
WHY DOES IT FAIL?)
b. WITHOUTSpace **FAIL** #3
-------------------------------------------------------------------------
II. NODESET APPROACH ('select' variable)
A. "EMPTY-TEXT" Test <xsl:when test="not($msg-fill-contents='')">
1. with... Correct Lookup?
a. WITHSpace? OK
b. WITHOUTSpace **FAIL** #4
2. with... BROKEN Lookup? (Broken lookup should fail (!) first, BUT is
incorrectly MISSED (by my test, anyway). Bad.)
a. WITHSpace? **FAIL** #5
b. WITHOUTSpace **FAIL** #6
B. "NODESET PRESENCE" Test <xsl:when test="$msg-fill-contents">
1. with... Correct Lookup?
a. WITHSpace? OK
b. WITHOUTSpace OK = INTERESTING SUCCESS CASE (first rank)
2. with... BROKEN Lookup? (Broken lookup fails first, and is
correctly CAUGHT by the test. Good.)
a. WITHSpace? OK
b. WITHOUTSpace OK
======================================================================
Debug Output Results:
FAIL CASE #1 (This was the original problem; now understood: wrong test!)
I. A. 1. b. = RTF | Empty-Text | Correct Lookup | WITHOUTSpace
SHOULD GO THROUGH!! **FAIL** Does *Not* get through
(through my test, anyway)! Bad.
(As you can see in the debug output's "copy-of", there is _something_
in there, but it is "Empty Element Content Only (No Whitespace)". Hmmm.)
DEBUG: XSL:OTHERWISE xsl:when test="not($msg-fill-contents='')" was FALSE,
apparently.
$MSG-NAME: [hdr-logo]
$MSG-FILL-CONTENTS VALUE-OF: []
$MSG-FILL-CONTENTS COPY-OF: [<img src="acmebank.gif" alt="Acme Bank">]
WARNING: $msg-fill-contents lookup came back EMPTY, apparently.
FAIL CASE #2 (THIS IS THE MOST INTERESTING "FAIL". WHY DOES IT FAIL?)
(See Also HTML Code pasted in above)
I. B. 2. a. = RTF | Nodeset | BROKEN Lookup | WITHSpace
SHOULD NOT GO THROUGH!! **FAIL** It does *Not* get caught
(by my test, anyway)! Bad.
(As you can see in the debug output's "$msg-fill-contents copy-of",
there is nothing in there (?). So why doesn't the test catch that?
Must be some lingering node in there, or some such??...)
XALAN (Version: I have Java 1.4.1_01)
DEBUG: WE ARE INSIDE xsl:when test="$msg-fill-contents" was TRUE, apparently.
$MSG-NAME: [hdr-logo]
$MSG-FILL-CONTENTS VALUE-OF: []
$MSG-FILL-CONTENTS COPY-OF: []
SAXON (Instant, 6.5.2)
DEBUG: WE ARE INSIDE xsl:when test="$msg-fill-contents" was TRUE, apparently.
$MSG-NAME: [hdr-logo]
$MSG-FILL-CONTENTS VALUE-OF: []
$MSG-FILL-CONTENTS COPY-OF: []
FAIL CASE #3
I. B. 2. b. = RTF | Nodeset | BROKEN Lookup | WITHOUTSpace
{ Exactly the same as FAIL CASE #2 }
(with or without space doesn't matter)
FAIL CASE #4
II. A. 1. b. = Nodeset | Empty-Text | Correct Lookup | WITHOUTSpace (Akin to
#1)
SHOULD GO THROUGH!! **FAIL** Does *Not* get through! Bad.
(As you can see in the debug output's "copy-of", there is
_something_ in there. (Is this _output_ "Empty Element Content Only
(No Whitespace)"? Doesn't seem to be, for what it's worth...) Hmmm.)
DEBUG: XSL:OTHERWISE not($msg-fill-contents='')" was FALSE, apparently
$msg-name: [cta-learn-more]
$msg-fill-contents value-of: []
$msg-fill-contents copy-of: [<markup>
<image WRsource="images/singlefocus_button_1.gif"></image>
</markup>]
WARNING: $msg-fill-contents lookup came back EMPTY, apparently.
FAIL CASE #5
II. A. 2. a. = Nodeset | Empty-Text | BROKEN Lookup | WITHSpace (Akin to #2)
SHOULD NOT GO THROUGH!! **FAIL** It does *Not* get caught
(by my test, anyway)! Bad.
(As you can see in the debug output's "copy-of", there is nothing
in there (?).)
DEBUG: WE ARE INSIDE. xsl:when test="not($msg-fill-contents='')" was TRUE,
apparently
$msg-name: [cta-learn-more]
$msg-fill-contents value-of: []
$msg-fill-contents copy-of: []
FAIL CASE #6
II. A. 2. b. = Nodeset | Empty-Text | BROKEN Lookup | WITHOUTSpace
{ Exactly the same as FAIL CASE #5 }
(with or without space doesn't matter)
--------------------------------------------------
INTERESTING SUCCESS CASE (first)(best) This one fixes the original problem.
II. B. 1. b. Nodeset | Nodeset | Correct Lookup | WITHOUTSpace
SHOULD GO THROUGH!! **OK** *Does* get through! Good.
(As you can see in the debug output's "copy-of", there is
_something_ in there, AND, we *did* successfully get past the
xsl:when test for "non-empty" $msg-fill-contents. O.K.)
DEBUG: WE ARE INSIDE. xsl:when test="$msg-fill-contents" was TRUE, apparently
$msg-name: [cta-learn-more]
$msg-fill-contents value-of: []
$msg-fill-contents copy-of: [<markup>
<image WRsource="images/singlefocus_button_1.gif"></image>
</markup>]
INTERESTING SUCCESS CASE (second)(qualified)
I. B. 1. b. = RTF | Nodeset | Correct Lookup | WITHOUTSpace
SHOULD GO THROUGH!! **OK** *Does* get through! Good.
(As you can see in the debug output's "copy-of", there is _something_
in there, AND, we *did* successfully get past the xsl:when test
for "non-empty" $msg-fill-contents. O.K.)
DEBUG: WE ARE INSIDE. xsl:when test="$msg-fill-contents" was TRUE, apparently
$msg-name: [cta-learn-more]
$msg-fill-contents value-of: []
$msg-fill-contents copy-of: [<img src="images/singlefocus_button_1.gif"
alt="">]
[...But, note that this "second" SUCCESS CASE in turn FAILS when the Lookup
is BROKEN: I. B. 2. a|b.]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/END of RESULTS MATRIX
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
"BIBLIOGRAPHY" - URL links to related earlier XSL-List postings
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=== WR E-MAILS ===================================================
William Reilly 1st e-mail [Tue, 22 Apr 2003 22:10:48 -0400]
Subj: [xsl] xsl:copy-of O.K. on RTF, but nothing on <EMPTY/> element content (?)
http://www.biglist.com/lists/xsl-list/archives/200304/msg01075.html
William Reilly 2nd e-mail [Wed, 23 Apr 2003 17:30:01 -0400]
Subj: RE: [xsl] xsl:copy-of O.K. on RTF, but nothing on <EMPTY/> element
content (?)
http://www.biglist.com/lists/xsl-list/archives/200304/msg01138.html
William Reilly 3rd e-mail (response to Leena Kulkarni e-mail) [Fri, 25 Apr
2003 14:42:52 -0400]
Subj: RE: [xsl] difference between Result Tree Fragment (RTF) and a nodeset
http://www.biglist.com/lists/xsl-list/archives/200304/msg01245.html
=== /WR E-MAILS ===================================================
=== RESPONSES =====================================================
Wendell Piez 1st (response to WR 2nd e-mail) [Fri, 25 Apr 2003 13:44:41 -0400]
Subj: RE: [xsl] xsl:copy-of O.K. on RTF, but nothing on <EMPTY/> element
content (?)
http://www.biglist.com/lists/xsl-list/archives/200304/msg01244.html
Wendell Piez 2nd (response to WR 3rd e-mail (response to Leena Kulkarni)) [Fri,
25 Apr 2003 15:43:24 -0400]
Subj: RE: [xsl] difference between Result Tree Fragment (RTF) and a nodeset
http://www.biglist.com/lists/xsl-list/archives/200304/msg01246.html
Michael Kay (response to WR 3rd e-mail (response to Leena Kulkarni)) [Fri, 25
Apr 2003 21:33:23 +0100]
Subj: RE: [xsl] difference between Result Tree Fragment (RTF) and a nodeset
http://www.biglist.com/lists/xsl-list/archives/200304/msg01247.html
G. Ken Holman (response to Leena Kulkarni e-mail) [Fri, 25 Apr 2003 12:54:53
-0400]
Subj: Re: [xsl] difference between Result Tree Fragment (RTF) and a nodeset
http://www.biglist.com/cgi-bin/wilma/wilma_hiliter/xsl-list/200304/msg01234.html
=== /RESPONSES =====================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/END of E-Mail
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list