Subject: Re: Escaping Characters in replace()
From: Nathan Tallman <ntallman@xxxxxxxxx>
Date: Tue, 15 Oct 2013 16:06:52 -0400
|
Thank you, David!
On Tue, Oct 15, 2013 at 3:54 PM, David Carlisle <davidc@xxxxxxxxx> 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,'"\.','."')"/>
> </xsl:template>
>
>
> David
>
>
>
>
>
> --
> google plus: https:/profiles.google.com/d.p.carlisle
|