xsl-list
[Top] [All Lists]

AW: AW: Restraining specific words from an elementtodisplay

2003-08-21 14:01:28
Joseph,

please insert *one* of the following debug statements between the
xsl:variable declaration of getHoldings and the xsl:if statement:

<xsl:value-of select="concat ('Debug: ###', $getHoldings, '###')"/>

<xsl:message><xsl:value-of select="concat ('Debug: ###', $getHoldings, 
'###')"/></xsl:message>

<xsl:comment><xsl:value-of select="concat ('Debug: ###', $getHoldings, 
'###')"/></xsl:comment>


I bet the variable $getHoldings doesn't contain the strings "LIBWEBSITE --"
or "JOURNALS --".
These strings must be inserted by the DisplayContent template, which you
didn't include in your mails. I guess, this template ignores (more or less)
the getHoldings parameter and instead displays the stuff found in the
context node (the parent of the MR870's).
What really confuses me is that the strings "North Campus Library" and
"South Campus Library" appear in your output...?!? Are these inserted
from some other template in your stylesheet?


Please post the following:
-  the DisplayContent template
-  the template which calls the Holdings template
-  a longer snippet of your XML containing the parent of the MR870's.


Regards,
Markus
__________________________
Markus Abt
Comet Computer GmbH
http://www.comet.de



----------
Von:    Joseph Tan
Gesendet:       Donnerstag, 21. August 2003 17:59
An:     xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Betreff:        Re: AW: [xsl] Restraining specific words from an 
elementtodisplay

Hi there, good to hear from you again.

The whole XML fragment is build on one record.  It's one of the
journals we have but located at different physical location (South and
North Library).  

Here's the exact CURRENT output: (all in one line)
North Campus Library NC-JOURNAL -- Vol 71-86 1993-2000 Not owned:
71n18(1993) Online access; years vary. LIBWEBSITE -- Online access;
years vary. South Campus Library JOURNALS -- Vol 1- 1958- Not Owned:
84n5c(1999) 

Here's the DESIRED output: (in this exact order preferrably)
South Campus Library Vol 1- 1958- Not Owned: 84n5c(1999) 
North Campus Library Vol 71-86 1993-2000 Not owned: 71n18(1993) 
Online access; years vary. (Note: I want it only appear only once)

I've forgotten to mentioned that we do not want to display "NC-JOURNAL
--" as well.  You were right, Markus, I did modify the the stylesheet
fragment before posting them but what I edited shouldn't have any effect
on the output.  Anyway, here's the exact code I copied from my
stylesheet.

<!--
####################################################################################################
-->
<xsl:template name="Holdings">
        <xsl:variable name="getHoldings">
                <xsl:for-each select="MR870/MR870c[text()!='ONLINELIB'
and text()!='JOURNALS --' and text()!='LIBWEBSITE --'] |
MR870/MR870a[text()!='ONLINELIB']">
                        <xsl:choose>
                                        <xsl:when
test="contains(.,'SOUTHLIB')">
                                                <xsl:value-of
select="substring-before(.,'SOUTHLIB')"/>South Campus Library
                                                <xsl:value-of
select="substring-after(.,'SOUTHLIB')"/>
                                        </xsl:when>     
                                        <xsl:when
test="contains(.,'NORTHLIB')">
                                                <xsl:value-of
select="substring-before(.,'NORTHLIB')"/>North Campus Library
                                                <xsl:value-of
select="substring-after(.,'NORTHLIB')"/>
                                        </xsl:when>
                                <xsl:otherwise>
                                        <xsl:value-of
select="text()"/><xsl:text> </xsl:text>
                                </xsl:otherwise>
                                </xsl:choose>
                </xsl:for-each>
        </xsl:variable>

        <xsl:if test="$getHoldings != ''">
                <xsl:call-template name="DisplayContent">
                        <xsl:with-param name="label"
select="'Option(s)'"/>
                        <xsl:with-param name="content"
select="$getHoldings"/>
                </xsl:call-template>
        </xsl:if>
</xsl:template>
<!--
####################################################################################################
-->

Thanks!  

JT

abt(_at_)comet(_dot_)de Thursday, August 21, 2003 9:54:44 AM >>>
Hello Joseph,

it's hard to see a logical structure in the XML file. Is every MR870a
"starting"
a new record? Or does your whole XML fragment build one record?
How should the output (logically) look like?

Anyway, the for-each loop
<xsl:for-each select="MR870/MR870c[text()!='ONLINELIB'
and text()!='JOURNALS --' and text()!='LIBWEBSITE --'] |
      MR870/MR870a[text()!='ONLINELIB']">
collects the text content of some MR870c and MR870a elements.

It seems to me that the DisplayContent template that you call would
then output these text contents without any structure, more or less in
a single line. Is that what you want?

Apart from that, I can't see why "JOURNAL --" and "LIBWEBSITE --"
appear in your output...
(Maybe you modified the stylesheet fragment prior posting.)


Regards,
Markus
__________________________
Markus Abt
Comet Computer GmbH
http://www.comet.de 


----------
Von:    Joseph Tan
Gesendet:       Donnerstag, 21. August 2003 15:28
An:     xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
Betreff:        Re: [xsl] Restraining specific words from an element
todisplay

Here's the XML input:

- <MR870>
  <MR870a>NORTHLIB</MR870a> 
  </MR870>
- <MR870>
  <MR870b>Location</MR870b> 
  <MR870c>NC-JOURNAL --</MR870c> 
  </MR870>
- <MR870>
  <MR870b>Textual holdings</MR870b> 
  <MR870c>Vol 71-86 1993-2000 Not owned: 71n18(1993)</MR870c> 
  </MR870>
- <MR870>
  <MR870a>ONLINELIB</MR870a> 
  </MR870>
- <MR870>
  <MR870b>Textual holdings</MR870b> 
  <MR870c>Online access; years vary.</MR870c> 
  </MR870>
- <MR870>
  <MR870a>ONLINELIB</MR870a> 
  </MR870>
- <MR870>
  <MR870b>Location</MR870b> 
  <MR870c>LIBWEBSITE --</MR870c> 
  </MR870>
- <MR870>
  <MR870b>Textual holdings</MR870b> 
  <MR870c>Online access; years vary.</MR870c> 
  </MR870>
- <MR870>
  <MR870a>SOUTHLIB</MR870a> 
  </MR870>
- <MR870>
  <MR870b>Location</MR870b> 
  <MR870c>JOURNALS --</MR870c> 
  </MR870>
- <MR870>
  <MR870b>Textual holdings</MR870b> 
  <MR870c>Vol 1- 1958- Not Owned: 84n5c(1999)</MR870c> 
  </MR870>

XSL code:

<xsl:template name="Holdings">
        <xsl:variable name="getHoldings">
                <xsl:for-each select="MR870/MR870c[text()!='ONLINELIB'
and text()!='JOURNALS --' and text()!='LIBWEBSITE --'] |
MR870/MR870a[text()!='ONLINELIB']">
                            <xsl:value-of select="text()"/><xsl:text>
</xsl:text>
                </xsl:for-each>
        </xsl:variable>

        <xsl:if test="$getHoldings != ''">
                <xsl:call-template name="DisplayContent">
                        <xsl:with-param name="label"
select="'Option(s)'"/>
                        <xsl:with-param name="content"
select="$getHoldings"/>
                </xsl:call-template>
        </xsl:if>
</xsl:template>

I'm able to NOT display "ONLINELIB" but not "JOURNAL --" and
"LIBWEBSITE --"

Thanks!

JT


armmarti(_at_)yahoo(_dot_)com Tuesday, August 19, 2003 1:00:51 AM >>>
Ok Joseph,
try to post both XML doc and the full XSLT stylesheet,
then we'll be able to analyze it in the whole. And
also clarify what you mean by "want to remove": do you
want to copy all the stuff into output except the
elements having the specified content?

Regards,
Armen
--- Joseph Tan <Joseph(_dot_)Tan(_at_)UTSouthwestern(_dot_)edu> wrote:
Tried that but it didn't work.  Weird!

JT

armmarti(_at_)yahoo(_dot_)com Saturday, August 16, 2003
12:54:24 AM >>>

--- Joseph Tan <Joseph(_dot_)Tan(_at_)UTSouthwestern(_dot_)edu>
wrote:
I would like to remove "ONLINELIB' , 'JOURNALS --'
and 'LIBWEBSITE --".  I am able to remove
ONLINELIB
but not the other two.  What's wrong with the
code?

...

In the following XPath expression you missed the 
space before dashes: must be "text()!='JOURNALS --'
and text()!='LIBWEBSITE --'" instead of
"text()!='JOURNALS--' and text()!='LIBWEBSITE--'"

            <xsl:for-each
select="MR870/MR870c[text()!='ONLINELIB' and
text()!='JOURNALS--' and text()!='LIBWEBSITE--'] |
MR870/MR870a[text()!='ONLINELIB']">
                    <xsl:value-of select="."/><xsl:text>
</xsl:text>
            </xsl:for-each>
...

I think that will solve the problem, since you say
that it works for "ONLINELIB".

Regards,
Armen


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site
design software
http://sitebuilder.yahoo.com 

 XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list 


 XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list 



__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list 



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>
  • AW: AW: Restraining specific words from an elementtodisplay, Markus Abt <=