xsl-list
[Top] [All Lists]

Re: [xsl] Escaping Characters in replace()

2013-10-15 15:07:33
Thank you, David!

On Tue, Oct 15, 2013 at 3:54 PM, David Carlisle 
<davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:
On 15/10/2013 20:31, Nathan Tallman wrote:

Thank you, David and Ivan. It did, of course, work... I just had more
problems than I thought. The code you helped with, works in situations
like:

     <unittitle>"The Atomic Bomb Foreshadowed: 1700 Years Ago".
1947.</unittitle>

However, I also have to account for situations like:
     <unittitle>
         <title render="doublequote">The Atomic Bomb Foreshadowed: 1700
Years Ago</title>. 1947.</unitdate>
     </unittitle>

There are separate instructions that insert " before the title/text()
and ." after title/text(), which results in:
     "The Atomic Bomb Foreshadowed: 1700 Years Ago.". 1947.

In this scenario, how can I get rid of the extraneous period? Should I
test for a unittitle/title that is immediately followed by a period?
If so, how would I do that? Testing on unittitle/title won't let me
change anything outside the node, like the extra period.

Many, many thanks for your wisdom.



Don't match on text() unless you have to:
insert " before the title/text()

in <title> blah <!-- stuff -->blah</title>

there are two text nodes so if you are not careful and add " around
title/text() you will get " blah ""blah" I'd so

<xsl:template match="title[@render='doublequote">
  <xsl:text>"</xsl:text>
 <xsl:apply-templates/>
 <xsl:text>"</xsl:text>
</xsl:template>

<xsl:template match="unititle">
  <xsl:variable name="x">
  <xsl:apply-templates/>
 </xsl:variable>
  <xsl:value-of select="replace($x,'&quot;\.','.&quot;')"/>
</xsl:template>


David





--
google plus: https:/profiles.google.com/d.p.carlisle

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


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