Well.. it does appear that I am using disable-output-escaping.
Here is my xslt code:
<!-- *** START OF STYLESHEET ***
Copyright 2007 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/lice
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- **************************
XSL to format the search output for Google Custom Search, Business Edition
**************************
<xsl:stylesheet xmlns:xsl="http://www.w3.o
<xsl:output method="html"/>
<!-- **************************
Logo setup
- whether to show logo: 0 for FALSE, 1 (or non-zero) for TRUE
- logo url
- logo size: '' for default image size
**************************
<xsl:variable name="show_logo">0</xsl:va
<xsl:variable name="logo_url">http://goo
<xsl:variable name="logo_width">150</xsl
<xsl:variable name="logo_height">58</xsl
<!-- **************************
Global Style variables: '' for using browser's default
**************************
<xsl:variable name="global_font">arial,s
<xsl:variable name="global_font_size"></
<xsl:variable name="global_bg_color">#ff
<xsl:variable name="global_text_color">#
<xsl:variable name="global_link_color">#
<xsl:variable name="global_vlink_color">
<xsl:variable name="global_alink_color">
<!-- *** search boxes *** -->
<xsl:variable name="search_box_size">32<
<!-- *** choose search button type: 'text' or 'image' *** -->
<xsl:variable name="choose_search_button
<xsl:variable name="search_button_text">
<xsl:variable name="search_button_image_
<!-- **************************
Result page components
- whether to show a component: 0 for FALSE, non-zero (e.g., 1) for TRUE
- text and style
**************************
<!-- *** choose result page header: '', 'provided', 'mine', or 'both' *** -->
<xsl:variable name="choose_result_page_h
<!-- *** search info bars *** -->
<xsl:variable name="show_search_info">1<
<!-- *** choose separation bar: 'ltblue', 'blue', 'line', 'nothing' *** -->
<xsl:variable name="choose_sep_bar">bvd<
<xsl:variable name="sep_bar_std_text">Se
<xsl:variable name="sep_bar_error_text">
<!-- *** spelling suggestions *** -->
<xsl:variable name="show_spelling">1</xs
<xsl:variable name="spelling_text">Did you mean:</xsl:variable>
<xsl:variable name="spelling_text_color"
<!-- **************************
Result elements
- whether to show an element ('1' for yes, '0' for no)
- font/size/color ('' for using style of the context)
**************************
<!-- *** result title and snippet *** -->
<xsl:variable name="show_res_title">1</x
<xsl:variable name="res_title_color">#29
<xsl:variable name="res_title_size">3</x
<xsl:variable name="show_res_snippet">1<
<xsl:variable name="res_snippet_size">80
<!-- *** keyword match (in title or snippet) *** -->
<xsl:variable name="res_keyword_color"><
<xsl:variable name="res_keyword_size"></
<xsl:variable name="res_keyword_format">
<!-- *** link URL *** -->
<xsl:variable name="show_res_url">1</xsl
<xsl:variable name="res_url_color">#848C
<xsl:variable name="res_url_size">-1</xs
<xsl:variable name="truncate_result_urls
<xsl:variable name="truncate_result_url_
<!-- *** misc elements *** -->
<xsl:variable name="show_meta_tags">0</x
<xsl:variable name="show_res_size">1</xs
<xsl:variable name="show_res_date">1</xs
<!-- *** used in result cache link, similar pages link, and description *** -->
<xsl:variable name="faint_color">#7777cc
<!-- **************************
Other variables
**************************
<!-- *** page title *** -->
<xsl:variable name="result_page_title">S
<xsl:variable name="error_page_title">Er
<!-- *** error message text *** -->
<xsl:variable name="server_error_msg_tex
<xsl:variable name="server_error_des_tex
<xsl:variable name="xml_error_msg_text">
<xsl:variable name="xml_error_des_text">
<!-- **************************
My global page header/footer
**************************
<xsl:template name="my_page_header">
<!-- *** replace the following with your own xhtml code or replace the text
between the xsl:text tags with html escaped html code *** -->
<xsl:text disable-output-escaping="y
</xsl:template>
<xsl:template name="my_page_footer">
<span class="p">
<xsl:text disable-output-escaping="y
</span>
</xsl:template>
<!-- **************************
Logo template
**************************
<xsl:template name="logo">
<a href="http://www.google.co
width="{$logo_width}" height="{$logo_height}"
alt="Go to Google Home" border="0" /></a>
</xsl:template>
<!-- **************************
Search result page header: logo and search box
**************************
<xsl:template name="result_page_header">
<table border="0" cellpadding="0" cellspacing="0">
<xsl:if test="$show_logo != '0'">
<tr>
<td rowspan="3" valign="top">
<xsl:call-template name="logo"/>
<xsl:call-template name="nbsp3"/>
</td>
</tr>
</xsl:if>
<tr>
<td valign="middle">
<xsl:call-template name="search_box">
<xsl:with-param name="type" select="'std_top'"/>
</xsl:call-template>
</td>
</tr>
</table>
</xsl:template>
<!-- **************************
Separation bar variables
**************************
<xsl:variable name="sep_bar_border_color
<xsl:choose>
<xsl:when test="$choose_sep_bar = 'ltblue'">#3366cc</xsl:whe
<xsl:when test="$choose_sep_bar = 'blue'">#3366cc</xsl:when>
<xsl:when test="$choose_sep_bar = 'bvd'">#9EB5A9</xsl:when>
<xsl:otherwise><xsl:value-
</xsl:choose>
</xsl:variable>
<xsl:variable name="sep_bar_bg_color">
<xsl:choose>
<xsl:when test="$choose_sep_bar = 'ltblue'">#e5ecf9</xsl:whe
<xsl:when test="$choose_sep_bar = 'blue'">#3366cc</xsl:when>
<xsl:when test="$choose_sep_bar = 'bvd'">#E2EEE8</xsl:when>
<xsl:otherwise><xsl:value-
</xsl:choose>
</xsl:variable>
<xsl:variable name="sep_bar_text_color">
<xsl:choose>
<xsl:when test="$choose_sep_bar = 'ltblue'">#000000</xsl:whe
<xsl:when test="$choose_sep_bar = 'blue'">#ffffff</xsl:when>
<xsl:otherwise><xsl:value-
</xsl:choose>
</xsl:variable>
<!-- **************************
Empty result set
**************************
<xsl:template name="no_RES">
<xsl:param name="query"/>
<span class="p">
<br/>
Your search - <b><xsl:value-of select="$query"/></b> - did not match any documents.
<br/>
No pages were found containing <b>"<xsl:value-of select="$query"/>"</b>.
<br/>
<br/>
Suggestions:
<ul>
<li>Make sure all words are spelled correctly.</li>
<li>Try different keywords.</li>
<li>Try more general keywords.</li>
</ul>
</span>
</xsl:template>
<!-- **************************
Global Style
default font type/size/color, background color, link color
using HTML CSS (Cascading Style Sheets)
**************************
<xsl:template name="style">
<style>
<xsl:comment>
body,td,div,.p,a,.d,.s{fon
body,td,div,.p,a,.d{font-s
body,div,td,.p,.s{color:<x
body,.d,.p,.s{background-c
.s{font-size: <xsl:value-of select="$res_snippet_size"
.g{margin-top: 1em; margin-bottom: 1em}
.s td{width:34em}
.l{font-size: <xsl:value-of select="$res_title_size"/>
.l{color: <xsl:value-of select="$res_title_color"/
a:link,.w,.w a:link{color:<xsl:value-of
.f,.f:link,.f a:link{color:<xsl:value-of
a:visited,.f a:visited{color:<xsl:value
a:active,.f a:active{color:<xsl:value-
.t{color:<xsl:value-of select="$sep_bar_text_colo
.t{background-color:<xsl:v
.z{display:none}
.i,.i:link{color:#a90a08}
.a,.a:link{color:<xsl:valu
div.n {margin-top: 1ex}
.n a{font-size: 10pt; color:<xsl:value-of select="$global_text_color
.n .i{font-size: 10pt; font-weight:bold}
.q a:visited,.q a:link,.q a:active,.q {color:#0000cc;}
.b,.b a{font-size: 12pt; color:#0000cc; font-weight:bold}
.d{margin-right:1em; margin-left:1em;}
div.oneboxResults {max-height:150px;overflow
body {
/*
Here we'll declare the default font-size and font-family.
The rest of the typographical rules use relative sizes based on this font-size.
We can easily modify overall typography by changing or overriding these values.
*/
font-size:11px;
font-family:verdana, arial, helvetica, sans-serif;
color:#333;
background-color:white;
margin:0;
padding:0;
/*
background-image: url('http://www.betterview
background-repeat: no-repeat;
background-attachment: fixed;
*/
}
p {margin:0 0 1em;}
#Content p {line-height:1.8; /* ~20px */}
#Content blockquote p {line-height:1.5;}
/* Browsers that understand the CSS child selector get the good typography. */
#Content p+p {margin-top:-1em; text-indent:2.7em;}
a {
color:#294339;
text-decoration:none;
font-weight:600;
}
a:link {color:#294339;}
a:visited {color:#507D67;}
a:hover {background-color:#DBF9EA;
h1 {
color:#333333;
font-size:12px; /* Not a relative value, since this is the site logotype */
line-height:12px; /* Ditto */
font-weight:800;
font-family:verdana, arial, helvetica, sans-serif; /* Again, it's the logotype, so we want this control. */
margin:0;
padding:0;
}
h2 {
color:#20543B;
font-size:1.47em; /* ~24px */
font-weight:800;
margin:0 0 .83em; /* margin-bottom: ~20px */
}
h3 {
color:#333;
font-size:1em;
font-weight:700;
margin:1.63em 0 .27em; /* ~18px 0 ~3px */
}
h4 {
color:#999;
font-size:1.27em; /* ~14px */
font-weight:800;
margin:.43em 0 .214em; /* ~6px 0 ~3px */
}
h5 {
color:#999;
font-size:1em;
font-style:italic;
font-weight:800;
margin:1.8em 0 .27em; /* ~20px 0 ~3px */
}
blockquote {
margin:1em 2.7em 1.36em; /* 11px ~30px ~15px */
color:#666;
line-height:1.5;
}
#article {
background-image:url(dotte
background-repeat:repeat-x
}
img {border-width:0;}
img.thumb {margin:10px 1px;}
#Menu {
float:left;
width:220px;
margin-top:38px;
padding:0 10px 40px;
background-image:url(http:
background-repeat:repeat-y
}
#Menu h2 {
color:#507D68;
font-size:1.27em; /* ~14px */
font-weight:800;
margin:.86em 0 .214em; /* ~12px 0 ~3px */
}
#Menu p {
font-size:.9em;
line-height:1.5;
margin:0 0 2em;
}
#Menu ul {margin:0 0 0 1em; padding:0;}
#Menu li {list-style-type:none; margin:0; padding:0; text-indent:-5px;line-heig
/* Please forgive me.
The extra DIV (Main) is needed to overcome a shortcoming of Opera5/Win.
The prefered way to set the width of the content would be to pad the
content of #Content using
"#Content>* {padding-left:114px; padding-right:15px;}" */
#Main {
clear:left;
float:left;
width:90%;
}
#Content {
padding:70px 15px 0px 75px;
/*background-image:url(bvd
background-repeat:no-repea
background-position:top right;
}
#prodheader {
padding:12px 0px 0px 0px;
font-weight:bold;
font-size:1.5em; /* ~14px */
background-image:url(http:
background-repeat:repeat-x
}
#authordate {
padding:4px 0px 0px 2px;
font-size:1.0em; /* ~14px */
}
#description {
font-size:13px;
}
#proddetailpic
{
padding:4px 0px 0px 2px;
font-size:1.0em; /* ~14px */
text-align:center;
}
#sponsor
{
padding:7px 0px 0px 129px;
font-size:1.0em; /* ~14px */
}
#Header {
width:100%;
margin-top:100px;
height:32px;
border-color:black;
border-style:solid;
border-width:1px 0;
background-image:url(http:
background-repeat:no-repea
background-position:center
/* Here is the ugly brilliant hack that protects IE5/Win from its own stupidity.
Thanks to Tantek Celik for the hack and to Eric Costello for publicizing it.
IE5/Win incorrectly parses the "\"}"" value, prematurely closing the style
declaration. */
voice-family: "\"}\"";
voice-family:inherit;
height:30px;
}
/* I've heard this called the "be nice to Opera 5" rule. Basically, it feeds correct
length values to user agents that exibit the parsing error exploited above yet get
the CSS box model right and understand the CSS2 parent-child selector. */
body>#Header {height:30px;}
#headerLogo {
float:left;
height:13px;
background-image:url(http:
background-position:top left;
background-repeat:no-repea
padding:10px 0 0 114px;
}
#headerOverlap {
position:absolute;
top:18px;
left:69%;
width:244px;
height:164px;
/*background-image:url(htt
background-image:url(http:
background-position:center
background-repeat:no-repea
}
#Copyright {
clear:both;
padding:50px 0px 100px 0px;
text-align:center;
font-weight:800;
color:#999;
}
#copyrightText {
position:relative;
left:-1.5em;
}
#logNav {margin:3em 0 4em; text-align:center;}
</xsl:comment>
</style>
</xsl:template>
<!-- *** base_url: collection info *** -->
<xsl:variable name="base_url">
<xsl:for-each
select="/GSP/PARAM[@name = 'client' or
@name = 'site' or
@name = 'num' or
@name = 'cx' or
@name = 'analyticsId' or
@name = 'xslt' or
@name = 'output' or
@name = 'lr' or
@name = 'ie']">
<xsl:value-of select="@name"/>=<xsl:valu
<xsl:if test="position() != last()">&</xsl:if>
</xsl:for-each>
</xsl:variable>
<!-- *** search_url *** -->
<xsl:variable name="search_url">
<xsl:for-each select="/GSP/PARAM[(@name != 'start') and
(@name != 'epoch') and
not(starts-with(@name, 'metabased_'))]">
<xsl:value-of select="@name"/><xsl:text>
<xsl:value-of select="@original_value"/>
<xsl:if test="position() != last()">
<xsl:text disable-output-escaping="y
</xsl:if>
</xsl:for-each>
</xsl:variable>
<!-- **************************
Search Parameters
**************************
<!-- *** num_results: actual num_results per page *** -->
<xsl:variable name="num_results">
<xsl:choose>
<xsl:when test="/GSP/PARAM[(@name='n
<xsl:value-of select="/GSP/PARAM[@name='
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="10"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- *** space_normalized_query: q = /GSP/Q *** -->
<xsl:variable name="qval">
<xsl:value-of select="/GSP/Q"/>
</xsl:variable>
<xsl:variable name="space_normalized_que
<xsl:value-of select="normalize-space($q
disable-output-escaping="y
</xsl:variable>
<!-- **************************
Figure out what kind of page this is
**************************
<xsl:template match="GSP">
<xsl:choose>
<xsl:when test="Q">
<xsl:call-template name="search_results"/>
</xsl:when>
<xsl:when test="ERROR">
<xsl:call-template name="error_page">
<xsl:with-param name="errorMessage" select="$server_error_msg_
<xsl:with-param name="errorDescription" select="$server_error_des_
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="error_page">
<xsl:with-param name="errorMessage" select="$xml_error_msg_tex
<xsl:with-param name="errorDescription" select="$xml_error_des_tex
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="escape_quot">
<xsl:param name="string"/>
<xsl:call-template name="replace_string">
<xsl:with-param name="find" select="'"'"/>
<xsl:with-param name="replace" select="'&quot;'"/>
<xsl:with-param name="string" select="$string"/>
</xsl:call-template>
</xsl:template>
<!-- **************************
Search results
**************************
<xsl:template name="search_results">
<html>
<!-- *** HTML header and style *** -->
<xsl:call-template name="langHeadStart"/>
<title><xsl:value-of select="$result_page_title
<xsl:value-of select="$space_normalized_
</title>
<xsl:call-template name="style"/>
<xsl:if test="/GSP/PARAM[(@name='a
<script src="http://www.google-ana
<script type="text/javascript">
_uacct="<xsl:value-of select="GSP/PARAM[(@name='
urchinTracker();
</script>
</xsl:if>
<script type="text/javascript">
<xsl:comment>
function resetForms() {
for (var i = 0; i < document.forms.length; i++ ) {
document.forms[i].reset();
}
}
//</xsl:comment>
</script>
<xsl:call-template name="langHeadEnd"/>
<body onLoad="resetForms()" dir="ltr">
<!-- *** Customer's own result page header *** -->
<xsl:if test="$choose_result_page_
$choose_result_page_header
<xsl:call-template name="my_page_header"/>
</xsl:if>
<!-- *** Result page header *** -->
<xsl:if test="$choose_result_page_
$choose_result_page_header
<xsl:call-template name="result_page_header" />
</xsl:if>
<!-- *** Top separation bar *** -->
<xsl:if test="Q != ''">
<xsl:call-template name="top_sep_bar">
<xsl:with-param name="text" select="$sep_bar_std_text"
<xsl:with-param name="show_info" select="$show_search_info"
<xsl:with-param name="time" select="TM"/>
</xsl:call-template>
</xsl:if>
<!-- *** Handle results (if any) *** -->
<xsl:choose>
<xsl:when test="RES or GM or Spelling">
<xsl:call-template name="results">
<xsl:with-param name="query" select="Q"/>
<xsl:with-param name="time" select="TM"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="Q=''">
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="no_RES">
<xsl:with-param name="query" select="Q"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<!-- *** Google footer *** -->
<xsl:call-template name="copyright"/>
<!-- *** Customer's own result page footer *** -->
<xsl:call-template name="my_page_footer"/>
<!-- *** HTML footer *** -->
</body>
</html>
</xsl:template>
<!-- **************************
Search box input form (Types: std_top, std_bottom, home, swr)
**************************
<xsl:template name="search_box">
<xsl:param name="type"/>
<form name="gs" method="GET" action="bvd.php">
<table border="0" cellpadding="0" cellspacing="0">
<tr><td>
<table cellpadding="0" cellspacing="0">
<tr>
<td valign="middle">
<font size="-1">
<input type="text" name="q" size="{$search_box_size}" maxlength="256" value="{$space_normalized_
</font>
</td>
<td valign="middle">
<font size="-1">
<xsl:call-template name="nbsp"/>
<xsl:choose>
<xsl:when test="$choose_search_butto
<input type="image" name="btnG" src="{$search_button_image
valign="bottom" width="60" height="26"
border="0" value="{$search_button_tex
</xsl:when>
<xsl:otherwise>
<input type="submit" name="btnG" value="{$search_button_tex
</xsl:otherwise>
</xsl:choose>
</font>
</td>
<td nowrap="1">
<font size="-1">
</font>
</td>
</tr>
</table>
</td></tr>
</table>
<xsl:text>
</xsl:text>
<xsl:call-template name="form_params"/>
</form>
</xsl:template>
<!-- *** form_params: parameters carried by the search input form *** -->
<xsl:template name="form_params">
<xsl:for-each
select="PARAM[@name != 'q' and
@name != 'ie' and
not(contains(@name, 'as_')) and
@name != 'btnG' and
@name != 'btnI' and
@name != 'site' and
@name != 'filter' and
@name != 'swrnum' and
@name != 'start' and
@name != 'access' and
@name != 'ip' and
@name != 'epoch' and
not(starts-with(@name ,'metabased_'))]">
<input type="hidden" name="{@name}" value="{@value}" />
<xsl:if test="@name = 'oe'">
<input type="hidden" name="ie" value="{@value}" />
</xsl:if>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
<!-- **************************
Output all results
**************************
<xsl:template name="results">
<xsl:param name="query"/>
<xsl:param name="time"/>
<!-- *** Handle spelling suggestions, if any *** -->
<xsl:if test="$show_spelling != '0'">
<xsl:call-template name="spelling"/>
</xsl:if>
<!-- *** Output results details *** -->
<div>
<!-- for real results -->
<xsl:apply-templates select="RES/R">
<xsl:with-param name="query" select="$query"/>
</xsl:apply-templates>
<!-- *** Filter note (if needed) *** -->
<xsl:if test="(RES/FI) and (not(RES/NB/NU))">
<p>
<i>
In order to show you the most relevant results, we have omitted some entries very similar to the <xsl:value-of select="RES/@EN"/> already displayed.<br/>
</i>
</p>
</xsl:if>
</div>
<xsl:call-template name="google_navigation">
<xsl:with-param name="prev" select="RES/NB/PU"/>
<xsl:with-param name="next" select="RES/NB/NU"/>
<xsl:with-param name="view_begin" select="RES/@SN"/>
<xsl:with-param name="view_end" select="RES/@EN"/>
<xsl:with-param name="guess" select="RES/M"/>
<xsl:with-param name="navigation_style" select="'google'"/>
</xsl:call-template>
</xsl:template>
<!-- **************************
Spelling suggestions in result page
**************************
<xsl:template name="spelling">
<xsl:if test="/GSP/Spelling/Sugges
<p><span class="p"><font color="{$spelling_text_col
<xsl:value-of select="$spelling_text"/>
<xsl:call-template name="nbsp"/>
</font></span>
<a href="bvd.php?q={/GSP/Spel
<xsl:value-of disable-output-escaping="y
select="/GSP/Spelling/Sugg
</a>
</p>
</xsl:if>
</xsl:template>
<!-- **************************
Truncation functions
**************************
<xsl:template name="truncate_url">
<xsl:param name="t_url"/>
<xsl:choose>
<xsl:when test="string-length($t_url
<xsl:value-of select="$t_url"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="first" select="substring-before($
<xsl:variable name="last">
<xsl:call-template name="truncate_find_last_t
<xsl:with-param name="t_url" select="$t_url"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="path_limit" select="$truncate_result_u
<xsl:choose>
<xsl:when test="$path_limit <= 0">
<xsl:value-of select="concat(substring($
</xsl:when>
<xsl:otherwise>
<xsl:variable name="chopped_path">
<xsl:call-template name="truncate_chop_path">
<xsl:with-param name="path" select="substring($t_url, string-length($first) + 2, string-length($t_url) - (string-length($first) + string-length($last) + 1))"/>
<xsl:with-param name="path_limit" select="$path_limit"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="concat($first, '/.../', $chopped_path, $last)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="truncate_find_last_t
<xsl:param name="t_url"/>
<xsl:choose>
<xsl:when test="contains($t_url, '/')">
<xsl:call-template name="truncate_find_last_t
<xsl:with-param name="t_url" select="substring-after($t
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$t_url"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="truncate_chop_path">
<xsl:param name="path"/>
<xsl:param name="path_limit"/>
<xsl:choose>
<xsl:when test="string-length($path)
<xsl:value-of select="$path"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="truncate_chop_path">
<xsl:with-param name="path" select="substring-after($p
<xsl:with-param name="path_limit" select="$path_limit"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- **************************
A single result
**************************
<xsl:template match="R">
<xsl:param name="query"/>
<xsl:variable name="display_url_tmp" select="substring-after(UD
<xsl:variable name="display_url">
<xsl:choose>
<xsl:when test="$display_url_tmp">
<xsl:value-of select="$display_url_tmp"/
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-after(U,
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="escaped_url" select="substring-after(UE
<xsl:variable name="protocol" select="substring-before(U
<xsl:variable name="full_url" select="UE"/>
<xsl:variable name="crowded_url" select="HN/@U"/>
<xsl:variable name="crowded_display_url"
<xsl:variable name="lower" select="'abcdefghijklmnopq
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQ
<xsl:variable name="temp_url" select="substring-after(U,
<xsl:variable name="stripped_url">
<xsl:choose>
<xsl:when test="$truncate_result_url
<xsl:call-template name="truncate_url">
<xsl:with-param name="t_url" select="$display_url"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$display_url"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- *** Indent as required (only supports 2 levels) *** -->
<xsl:if test="@L='2'">
<xsl:text disable-output-escaping="y
</xsl:if>
<!-- *** Result Header *** -->
<p class="g">
<!-- *** Result Title (including PDF tag and hyperlink) *** -->
<xsl:if test="$show_res_title != '0'">
<font size="-2"><b>
<xsl:choose>
<xsl:when test="@MIME='text/html' or @MIME='' or not(@MIME)"></xsl:when>
<xsl:when test="@MIME='text/plain'">
<xsl:when test="@MIME='application/r
<xsl:when test="@MIME='application/p
<xsl:when test="@MIME='application/p
<xsl:when test="@MIME='application/v
<xsl:when test="@MIME='application/v
<xsl:when test="@MIME='application/m
<xsl:otherwise>
<xsl:variable name="extension">
<xsl:call-template name="last_substring_after
<xsl:with-param name="string" select="substring-after(
substring-after(U,'://'),
'/')"/>
<xsl:with-param name="separator" select="'.'"/>
<xsl:with-param name="fallback" select="'UNKNOWN'"/>
</xsl:call-template>
</xsl:variable>
[<xsl:value-of select="translate($extensi
</xsl:otherwise>
</xsl:choose>
</b></font>
<xsl:text> </xsl:text>
<xsl:text disable-output-escaping='y
<xsl:value-of disable-output-escaping='y
<xsl:text disable-output-escaping='y
<span class="l">
<xsl:choose>
<xsl:when test="T">
<xsl:call-template name="reformat_keyword">
<xsl:with-param name="orig_string" select="T"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-
</xsl:choose>
</span>
<xsl:text disable-output-escaping='y
</xsl:if>
<!-- *** Snippet Box *** -->
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="s">
<xsl:if test="$show_res_snippet != '0'">
<xsl:call-template name="reformat_keyword">
<xsl:with-param name="orig_string" select="S"/>
</xsl:call-template>
</xsl:if>
<!-- *** Meta tags *** -->
<xsl:if test="$show_meta_tags != '0'">
<xsl:apply-templates select="MT"/>
</xsl:if>
<!-- *** URL *** -->
<br/>
<font color="{$res_url_color}" size="{$res_url_size}">
<xsl:if test="$show_res_url != '0'">
<xsl:value-of select="$stripped_url"/>
</xsl:if>
</font>
</td>
</tr>
</table>
</p>
<!-- *** End indenting as required (only supports 2 levels) *** -->
<xsl:if test="@L='2'">
<xsl:text disable-output-escaping="y
</xsl:if>
</xsl:template>
<!-- **************************
Meta tag values within a result
**************************
<xsl:template match="MT">
<br/>
<span class="f"><xsl:value-of select="@N"/>: </span><xsl:value-of select="@V"/>
</xsl:template>
<!-- **************************
Variables for reformatting keyword-match display
**************************
<xsl:variable name="keyword_orig_start" select="'<b>'"/>
<xsl:variable name="keyword_orig_end" select="'</b>'"/>
<xsl:variable name="keyword_reformat_sta
<xsl:if test="$res_keyword_format"
<xsl:text><</xsl:text>
<xsl:value-of select="$res_keyword_forma
<xsl:text>></xsl:text>
</xsl:if>
<xsl:if test="($res_keyword_size) or ($res_keyword_color)">
<xsl:text><font</xsl:te
<xsl:if test="$res_keyword_size">
<xsl:text> size="</xsl:text>
<xsl:value-of select="$res_keyword_size"
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:if test="$res_keyword_color">
<xsl:text> color="</xsl:text>
<xsl:value-of select="$res_keyword_color
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:text>></xsl:text>
</xsl:if>
</xsl:variable>
<xsl:variable name="keyword_reformat_end
<xsl:if test="($res_keyword_size) or ($res_keyword_color)">
<xsl:text></font></x
</xsl:if>
<xsl:if test="$res_keyword_format"
<xsl:text></</xsl:text>
<xsl:value-of select="$res_keyword_forma
<xsl:text>></xsl:text>
</xsl:if>
</xsl:variable>
<!-- **************************
Reformat the keyword match display in a title/snippet string
**************************
<xsl:template name="reformat_keyword">
<xsl:param name="orig_string"/>
<xsl:variable name="reformatted_1">
<xsl:call-template name="replace_string">
<xsl:with-param name="find" select="$keyword_orig_star
<xsl:with-param name="replace" select="$keyword_reformat_
<xsl:with-param name="string" select="$orig_string"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="reformatted_2">
<xsl:call-template name="replace_string">
<xsl:with-param name="find" select="$keyword_orig_end"
<xsl:with-param name="replace" select="$keyword_reformat_
<xsl:with-param name="string" select="$reformatted_1"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of disable-output-escaping='y
</xsl:template>
<!-- **************************
Google navigation bar in result page (do not customize)
**************************
<xsl:template name="google_navigation">
<xsl:param name="prev"/>
<xsl:param name="next"/>
<xsl:param name="view_begin"/>
<xsl:param name="view_end"/>
<xsl:param name="guess"/>
<xsl:param name="navigation_style"/>
<xsl:variable name="fontclass">
<xsl:choose>
<xsl:when test="$navigation_style = 'top'">s</xsl:when>
<xsl:otherwise>b</xsl:othe
</xsl:choose>
</xsl:variable>
<!-- *** Test to see if we should even show navigation *** -->
<xsl:if test="($prev) or ($next)">
<!-- *** Start Google result navigation bar *** -->
<xsl:if test="$navigation_style != 'top'">
<xsl:text disable-output-escaping="y
<div class="n"></x
</xsl:if>
<table border="0" cellpadding="0" width="1%" cellspacing="0">
<tr align="center" valign="top">
<xsl:if test="$navigation_style != 'top'">
<td valign="bottom" nowrap="1">
<font size="-1">
<xsl:call-template name="nbsp"/>
</font>
</td>
</xsl:if>
<!-- *** Show previous navigation, if available *** -->
<xsl:choose>
<xsl:when test="$prev">
<td nowrap="1">
<span class="{$fontclass}">
<a href="bvd.php?{$search_url
$num_results - 1}">
<xsl:if test="$navigation_style = 'google'">
<!--<img src="images/nav_previous.g
alt="Previous" border="0"/>-->
<br/>
</xsl:if>
<xsl:if test="$navigation_style = 'top'">
<xsl:text><</xsl:text>
</xsl:if>
<xsl:text>Previous</xsl:te
</a>
<xsl:call-template name="nbsp"/>
</span>
<xsl:if test="$navigation_style != 'google'">
<xsl:call-template name="nbsp"/>
</xsl:if>
</td>
</xsl:when>
<xsl:otherwise>
<td nowrap="1">
<xsl:if test="$navigation_style = 'google'">
<!--<img src="images/nav_first.gif"
alt="First" border="0"/>-->
<br/>
</xsl:if>
</td>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="($navigation_style = 'google') or
($navigation_style = 'link')">
<!-- *** Google result set navigation *** -->
<xsl:variable name="mod_end">
<xsl:choose>
<xsl:when test="$next"><xsl:value-of
<xsl:otherwise><xsl:value-
</xsl:choose>
</xsl:variable>
<xsl:call-template name="result_nav">
<xsl:with-param name="start" select="0"/>
<xsl:with-param name="end" select="$mod_end"/>
<xsl:with-param name="current_view" select="($view_begin)-1"/>
<xsl:with-param name="navigation_style" select="$navigation_style"
</xsl:call-template>
</xsl:if>
<!-- *** Show next navigation, if available *** -->
<xsl:choose>
<xsl:when test="$next">
<td nowrap="1">
<xsl:if test="$navigation_style != 'google'">
<xsl:call-template name="nbsp"/>
</xsl:if>
<span class="{$fontclass}">
<xsl:call-template name="nbsp"/>
<a href="bvd.php?{$search_url
$num_results - 1}">
<xsl:if test="$navigation_style = 'google'">
<!--
<img src="images/nav_next.gif" width="100" height="26"
alt="Next" border="0"/>
-->
<br/>
</xsl:if>
<xsl:text>Next</xsl:text>
<xsl:if test="$navigation_style = 'top'">
<xsl:text>></xsl:text>
</xsl:if>
</a>
</span>
</td>
</xsl:when>
<xsl:otherwise>
<td nowrap="1">
<xsl:if test="$navigation_style != 'google'">
<xsl:call-template name="nbsp"/>
</xsl:if>
<xsl:if test="$navigation_style = 'google'">
<!--
<img src="images/nav_last.gif" width="46" height="26"
alt="Last" border="0"/>
-->
<br/>
</xsl:if>
</td>
</xsl:otherwise>
</xsl:choose>
<!-- *** End Google result bar *** -->
</tr>
</table>
<xsl:if test="$navigation_style != 'top'">
<xsl:text disable-output-escaping="y
</center></xsl:text>
</xsl:if>
</xsl:if>
</xsl:template>
<!-- **************************
Helper templates for generating Google result navigation (do not customize)
only shows 10 sets up or down from current view
**************************
<xsl:template name="result_nav">
<xsl:param name="start" select="'0'"/>
<xsl:param name="end"/>
<xsl:param name="current_view"/>
<xsl:param name="navigation_style"/>
<!-- *** Choose how to show this result set *** -->
<xsl:choose>
<xsl:when test="($start)<(($curre
</xsl:when>
<xsl:when test="(($current_view)>
(($current_view)<(($sta
<td>
<xsl:if test="$navigation_style = 'google'">
<!--<img src="images/nav_current.gi
<br/>
</xsl:if>
<xsl:if test="$navigation_style = 'link'">
<xsl:call-template name="nbsp"/>
</xsl:if>
<span class="i"><xsl:value-of
select="(($start)div($num_
<xsl:call-template name="nbsp"/>
<xsl:if test="$navigation_style = 'link'">
<xsl:call-template name="nbsp"/>
</xsl:if>
</td>
</xsl:when>
<xsl:otherwise>
<td>
<xsl:if test="$navigation_style = 'link'">
<xsl:call-template name="nbsp"/>
</xsl:if>
<a href="bvd.php?{$search_url
<xsl:if test="$navigation_style = 'google'">
<!--<img src="images/nav_page.gif" width="16" height="26" alt="Navigation"
border="0"/>-->
<br/>
</xsl:if>
<xsl:value-of select="(($start)div($num_
</a>
<xsl:call-template name="nbsp"/>
<xsl:if test="$navigation_style = 'link'">
<xsl:call-template name="nbsp"/>
</xsl:if>
</td>
</xsl:otherwise>
</xsl:choose>
<!-- *** Recursively iterate through result sets to display *** -->
<xsl:if test="((($start)+($num_res
((($start)+($num_results))
(10*($num_results))))">
<xsl:call-template name="result_nav">
<xsl:with-param name="start" select="$start+$num_result
<xsl:with-param name="end" select="$end"/>
<xsl:with-param name="current_view" select="$current_view"/>
<xsl:with-param name="navigation_style" select="$navigation_style"
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- **************************
Top separation bar
**************************
<xsl:template name="top_sep_bar">
<xsl:param name="text"/>
<xsl:param name="show_info"/>
<xsl:param name="time"/>
<br />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="{$sep_bar_border_
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="{$sep_bar_bg_colo
<tr>
<td nowrap="1" width="1%" bgcolor="{$sep_bar_bg_colo
<font size="+1">
<xsl:call-template name="nbsp"/><b><xsl:value
</font>
</td>
<td nowrap="1" align="right" bgcolor="{$sep_bar_bg_colo
<xsl:if test="$show_info != '0'">
<font size="-1">
<xsl:if test="count(/GSP/RES/R)>0 ">
Results <b><xsl:value-of select="RES/@SN"/></b> - <b><xsl:value-of select="RES/@EN"/></b> of about <b><xsl:value-of select="RES/M"/></b> for <b><xsl:value-of select="$space_normalized_
</xsl:if>
Search took <b><xsl:value-of select="round($time * 100.0) div 100.0"/></b> seconds.
</font>
</xsl:if>
</td>
</tr>
</table>
<hr class="z"/>
<xsl:if test="$choose_sep_bar = 'line'">
<hr size="1" color="gray"/>
</xsl:if>
</xsl:template>
<!-- **************************
Utility function for constructing copyright text
**************************
<xsl:template name="copyright">
<center>
<br/><br/>
<p>
<font face="arial,sans-serif" size="-1" color="#2f2f2f">
</font>
</p>
</center>
</xsl:template>
<!-- **************************
Utility functions for generating html entities
**************************
<xsl:template name="nbsp">
<xsl:text disable-output-escaping="y
</xsl:template>
<xsl:template name="nbsp3">
<xsl:call-template name="nbsp"/>
<xsl:call-template name="nbsp"/>
<xsl:call-template name="nbsp"/>
</xsl:template>
<xsl:template name="nbsp4">
<xsl:call-template name="nbsp3"/>
<xsl:call-template name="nbsp"/>
</xsl:template>
<xsl:template name="quot">
<xsl:text disable-output-escaping="y
</xsl:template>
<xsl:template name="copy">
<xsl:text disable-output-escaping="y
</xsl:template>
<!-- **************************
Utility functions for generating head elements so that the XSLT processor
won't add a meta tag to the output, since it may specify the wrong
encoding (utf8) in the meta tag.
**************************
<xsl:template name="plainHeadStart">
<xsl:text disable-output-escaping="y
<meta name="robots" content="NOINDEX,NOFOLLOW"
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template name="plainHeadEnd">
<xsl:text disable-output-escaping="y
<xsl:text>
</xsl:text>
</xsl:template>
<!-- **************************
Utility functions for generating head elements with a meta tag to the output
specifying the character set as requested
**************************
<xsl:template name="langHeadStart">
<xsl:text disable-output-escaping="y
<meta name="robots" content="NOINDEX,NOFOLLOW"
<xsl:choose>
<xsl:when test="PARAM[(@name='oe') and (@value='utf8')]">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
</xsl:when>
<xsl:when test="PARAM[(@name='oe') and (@value!='')]">
<meta http-equiv="content-type" content="text/html; charset={PARAM[@name='oe']
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_zh-CN')]">
<meta http-equiv="content-type" content="text/html; charset=GB2312"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_zh-TW')]">
<meta http-equiv="content-type" content="text/html; charset=Big5"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_cs')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-2"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_da')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_nl')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_en')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_et')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_fi')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_fr')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_de')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_el')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-7"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_iw')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-8-I"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_hu')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-2"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_is')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_it')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_ja')]">
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_ko')]">
<meta http-equiv="content-type" content="text/html; charset=EUC-KR"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_lv')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_lt')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_no')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_pl')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-2"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_pt')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_ro')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-2"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_ru')]">
<meta http-equiv="content-type" content="text/html; charset=windows-1251"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_es')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:when test="PARAM[(@name='lr') and (@value='lang_sv')]">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
</xsl:when>
<xsl:otherwise>
<meta http-equiv="content-type" content="text/html; charset="/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template name="langHeadEnd">
<xsl:text disable-output-escaping="y
<xsl:text>
</xsl:text>
</xsl:template>
<!-- **************************
Utility functions
**************************
<!-- *** Find the substring after the last occurence of a separator *** -->
<xsl:template name="last_substring_after
<xsl:param name="string"/>
<xsl:param name="separator"/>
<xsl:param name="fallback"/>
<xsl:variable name="newString"
select="substring-after($s
<xsl:choose>
<xsl:when test="$newString!=''">
<xsl:call-template name="last_substring_after
<xsl:with-param name="string" select="$newString"/>
<xsl:with-param name="separator" select="$separator"/>
<xsl:with-param name="fallback" select="$newString"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$fallback"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- *** Find and replace *** -->
<xsl:template name="replace_string">
<xsl:param name="find"/>
<xsl:param name="replace"/>
<xsl:param name="string"/>
<xsl:choose>
<xsl:when test="contains($string, $find)">
<xsl:value-of select="substring-before($
<xsl:value-of select="$replace"/>
<xsl:call-template name="replace_string">
<xsl:with-param name="find" select="$find"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="string"
select="substring-after($s
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- **************************
Display error messages
**************************
<xsl:template name="error_page">
<xsl:param name="errorMessage"/>
<xsl:param name="errorDescription"/>
<html>
<xsl:call-template name="plainHeadStart"/>
<title><xsl:value-of select="$error_page_title"
<xsl:call-template name="style"/>
<xsl:call-template name="plainHeadEnd"/>
<body dir="ltr">
<xsl:call-template name="my_page_header"/>
<xsl:if test="$show_logo != '0'">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td rowspan="3" valign="top">
<xsl:call-template name="logo"/>
<xsl:call-template name="nbsp3"/>
</td>
</tr>
</table>
</xsl:if>
<xsl:call-template name="top_sep_bar">
<xsl:with-param name="text" select="$sep_bar_error_tex
<xsl:with-param name="show_info" select="0"/>
<xsl:with-param name="time" select="0"/>
</xsl:call-template>
<p>
<table width="99%" border="0" cellpadding="2" cellspacing="0">
<tr>
<td><font color="#990000" size="+1">Message:</font><
<td><font color="#990000" size="+1"><xsl:value-of select="$errorMessage"/></
</tr>
<tr>
<td><font color="#990000">Descriptio
<td><font color="#990000"><xsl:value
</tr>
<tr>
<td><font color="#990000">Details:</
<td><font color="#990000"><xsl:copy-
</tr>
</table>
</p>
<hr/>
<xsl:call-template name="copyright"/>
<xsl:call-template name="my_page_footer"/>
</body>
</html>
</xsl:template>
<!-- **************************
Swallow unmatched elements
**************************
<xsl:template match="@*|node()"/>
</xsl:stylesheet>
<!-- *** END OF STYLESHEET *** -->
<!-- Stylus Studio meta-information - (c) 2004-2007. Progress Software Corporation. All rights reserved.
<metaInformation>
<scenarios ><scenario default="yes" name="Scenario1" userelativepaths="yes" externalpreview="no" url="bvd.xml" htmlbaseurl="" outputurl="" processortype="saxon8" useresolver="no" profilemode="0" profiledepth="" profilelength="" urlprofilexml="" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath=
</metaInformation>
-->
Main Topics
Browse All Topics





by: GertonePosted on 2007-08-28 at 10:02:00ID: 19784873
I assume you are using disable-output-escaping all through the stylesheet
disable-output-escaping is not supported by FF XSLT
(and likely never will be)
note that disable-output-escaping is not a mandatory functionality to be conformant
this means that FF has a conformant XSLT processor even if it doesn't support disable-output-escaping
you will need to find alternatives
one option is to make sure that the HTML you have embedded in your XML is wellformed
so you can use xsl:copy instead of xsl-value of with escape disabling
for that you have to remove the CDATA sections that are likely in your XML
and embed the HTML as real wellformed XHTML
cheers
Geert