|
Subject: RE: [xsl] special characters replaced in javascript url From: "Mingqiang Yu" <myu@xxxxxxxx> Date: Sat, 22 Oct 2005 16:58:31 -0600 (MDT) |
Thanks for the help. I tried the last way (use attributes such as onClick
) and things work fine now. Here is the piece of code I used. Hope it will
help someone who got similar problems.
<xsl:element name='a'>
<xsl:attribute name='href'>#</xsl:attribute>
<xsl:attribute name='onClick'>
<xsl:text>frLink('FRLink','</xsl:text><xsl:value-of select="
$field"/><xsl:text>',"</xsl:text><xsl:value-of
select="$thisTerm"/><xsl:text>")</xsl:text>
</xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
Instead of:
<a href="javascript:frLink('FRLink','{$field}',"{$thisTerm}&quo
t;);"><xsl:copy-of select="."/></a>
Thanks a lot for your help.
Ming
> Non-ASCII characters cannot legally appear in a URI, which is why XSLT
> always applies %-escaping to them. Unfortunately browsers aren't always
> very
> compliant with the specs, and this is particularly the case with
> Javascript
> "URLs" which usually are not really URIs at all.
>
> In XSLT 2.0 you can suppress the automatic %-escaping of URI attributes
> (Saxon 6.5.x also has an extension to do it with 1.0). With other
> processors, the best rule is to keep the Javascript in your href
> attributes
> very simple, just invoking functions defined in a script section. Better
> still, don't use href at all, instead use attributes such as onClick which
> are not defined as URIs.
>
> Michael Kay
> http://www.saxonica.com/
>
>> -----Original Message-----
>> From: Mingqiang Yu [mailto:myu@xxxxxxxx]
>> Sent: 22 October 2005 05:59
>> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>> Subject: [xsl] special characters replaced in javascript url
>>
>> I have a problem which was asked a while ago but I couldn't
>> find the final
>> answer to that question. So I'm sorry that I have to raise
>> this question
>> again.(http://lists.xml.org/archives/xml-dev/200310/msg00841.html)
>>
>> I have a very similar problem in which, I have an xml record
>> passed to my
>> stylesheet which contains the following string:
>> Crémieu, V.
>> So, in order for the stylesheet to handle this special characters
>> correctly, I need to defined it in my dtd file(document.dtd)
>> like this:
>> <!ENTITY eacute "é" >
>> and include this dtd file in the xml file passed to the stylesheet:
>> <!DOCTYPE document SYSTEM "document.dtd" >
>>
>> Then, the special characters are displayed correctly but when
>> I tried to
>> pass it as part of the url through javascript:
>> <a
>> href="javascript:frLink('FRLink','author',"{$thisTerm}");">
>> in which the $thisTerm is the string Crémieu, V., the
>> same string
>> becomes "Cr%C3%A9mieu, V".
>>
>> I tried to use the solution introduced in the link above by doing
>> escape-javascript like this:
>> <xsl:template name="escape-javascript">
>> <xsl:param name="string" />
>> <xsl:choose>
>> <xsl:when test='contains($string, "é")'>
>> <xsl:call-template name="escape-javascript">
>> <xsl:with-param name="string"
>> select='substring-before($string, "é")' />
>> </xsl:call-template>
>> <xsl:text>&eacute;</xsl:text>
>> <xsl:call-template name="escape-javascript">
>> <xsl:with-param name="string"
>> select='substring-after($string, "é")' />
>> </xsl:call-template>
>> </xsl:when>
>> <!-- test for other special characters or entities here -->
>> <xsl:otherwise><xsl:value-of select="$string"
>> /></xsl:otherwise>
>> </xsl:choose>
>> </xsl:template>
>>
>> It seems to work for this case. But I have too many special characters
>> that I cannot do the escape for every special characters.
>>
>> Can you help to find a better solution to solve this problem?
>>
>> Thanks in advance.
>>
>> Ming
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] special characters replac, Michael Kay | Thread | [xsl] foreach, preceding-sibling::n, Mingqiang Yu |
| Re: [xsl] Again-- How to switch sty, António Mota | Date | [xsl] MSXML bug - xsl:import not co, Robert Koberg |
| Month |