|
Subject: RE: [xsl] xsl:copy-of O.K. on RTF, but nothing on <EMPTY/> element content (?) From: "Michael Kay" <mhk@xxxxxxxxx> Date: Thu, 1 May 2003 19:00:33 +0100 |
I would suggest replacing:
<xsl:variable name="msg-fill-contents">
<xsl:for-each select="document($lookupfilename)//msgs/msg">
<xsl:apply-templates
select="self::node()[@name=$msg-name]/segment[@name=$segment]/markup/nod
e()"/>
</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>
with:
<xsl:variable name="messages"
select="document($lookupfilename)//msgs/
msg[@name=$msg-name]/segment[@name=$segment]/markup/node()"/>
<xsl:choose>
<xsl:when test="$messages">
<xsl:apply-templates select="$messages"/>
<xsl:when>
<xsl:otherwise>
<xsl:text>WARNING: $msg-fill-contents lookup came back EMPTY,
apparently.</xsl:text>
</xsl:otherwise>
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> William Reilly
> Sent: 01 May 2003 17:17
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] xsl:copy-of O.K. on RTF, but nothing on
> <EMPTY/> element content (?)
>
>
> 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@xxxxxxxxxxx
> 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()[@name=$msg-name]/segment[@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@xxxxxxxxxxx
> 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@xxxxxxxxxxx
> 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@xxxxxxxxxxx
> 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[@id='td01']"/>
> </td>
> <td>
> <xsl:apply-templates select="div[@id='td02']"/>
> </td>
> </tr>
> </table>
> <div>
> <xsl:apply-templates select="div[@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[@name=$msg-name]/segment[@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()[@name=$msg-name]/segment[@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@xxxxxxxxxxx
> 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/20
0304/msg01234.html
=== /RESPONSES =====================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++
/END of E-Mail
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] xsl:copy-of O.K. on RTF, , William Reilly | Thread | Re: [xsl] xsl:copy-of O.K. on RTF, , Mike Haarman |
| [xsl] Comparing Variables, Fernandes, John | Date | [xsl] Newline problems, Vishwajit Pantvaidya |
| Month |