Re: [xsl] Variables and HTML

Subject: Re: [xsl] Variables and HTML
From: Carmelo Montanez <carmelo@xxxxxxxx>
Date: Thu, 10 Mar 2005 16:33:20 -0500
Hey Jay et all:

Below are my xml (snap shot) and xslt files. What I am attempting to do
(as far as this issue goes) is that for each "name" attribute of the
"linktoterm" element, modify the content of the "definition" element as follows:

"A Ballot prepared or cast by a voter other than at a regular polling place"

Modify to

"A <a href = "Ballot">Ballot</a> prepared or <a href = "cast">cast</a> by a voter other than at a regular polling place."

The relevant code is the "modifyDefinition" template.  Please run it and see
what is generated.  The issue are the entity references inside the variable.

The transformation do other things, but this is the issue I am stock with.


----------------------------------------------- xml file ----------------------------------------

<?xml version="1.0"?>
<term name="Absentee Ballot">
<association type = "voting"/>
<source name= "VSS">
NIST Hanbook 150:2001 NVLAP Procedures and General Requirements
<linkTo termtolink="Ballot"/>
<linkTo termtolink="cast"/>
A Ballot prepared or cast by a voter other than at a regular polling place.

------------------------------------------- xslt file --------------------------------------------

<xsl:stylesheet version="1.0"
<xsl:output method="html"/>
<xsl:preserve-space elements="*"/>

<xsl:param name="heading" />
<xsl:variable name="italicOpen">">&lt;i></xsl:variable>
<xsl:variable name="italicClose">&lt;/i></xsl:variable>
<xsl:variable name="anchorOpen">&lt;a href="</xsl:variable>
<xsl:variable name="anchorClose">&lt;/a></xsl:variable>
<xsl:variable name="varContentOpen">#{</xsl:variable>
<xsl:variable name="varContentClose">}</xsl:variable>
<xsl:template match="glossary">

<title>Full Glossary Selected</title>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<a href="";>
<IMG SRC="gsa_logo.gif" border="0" width="46" height="46" /></a></td>
<td colspan="2" valign="bottom" align="right">
<img src="usgsa.gif" border="0" width="238" height="41" /></td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<td><img src="header01.gif" alt="spacer"
width="780" height="16" /></td>
<td><a href="";>
<img src="header02.gif" alt="XML Gov Logo"
border="0" width="225" height="40" /></a>
<img src="header03.jpg" alt="flag" width="600"
height="40" /></td>
<td><img src="header04.gif" alt="spacer"
width="780" height="13" /></td>

       <h1 align="CENTER"><xsl:value-of select="$heading" /></h1>
       <CENTER><A name="index"></A>
       <a href="#A">A</a> |
       <a href="#B">B</a> |
       <a href="#C">C</a> |
       <a href="#D">D</a> |
       <a href="#E">E</a> |
       <a href="#F">F</a> |
       <a href="#G">G</a> |
       <a href="#H">H</a> |
       <a href="#I">I</a> |
       <a href="#J">J</a> |
       <a href="#K">K</a> |
       <a href="#L">L</a> |
       <a href="#M">M</a> |
       <a href="#N">N</a> |
       <a href="#O">O</a> |
       <a href="#P">P</a> |
       <a href="#Q">Q</a> |
       <a href="#R">R</a> |
       <a href="#S">S</a> |
       <a href="#T">T</a> |
       <a href="#U">U</a> |
       <a href="#V">V</a> |
       <a href="#W">W</a> |
       <a href="#X">X</a> |
       <a href="#Y">Y</a> |
       <a href="#Z">Z</a> </CENTER>


<xsl:template match="term">
<xsl:variable name="anchor" select = "string(normalize-space(@name))"/>
<xsl:variable name="anchorLetter" select = "substring(normalize-space(@name),1,1)"/>
<DT><A name="{$anchor}"></A> <A name="{$anchorLetter}"></A><B><xsl:value-of select = "@name"/></B></DT><br></br>
<xsl:apply-templates select = "definition"/>

<xsl:template match="definition">
<xsl:call-template name="modifyDefinition">
<xsl:with-param name="counter">1</xsl:with-param>
<xsl:with-param name="outputDefinition" select = "string(normalize-space(.))"/>
<xsl:with-param name="howManyTerms" select="count(linkTo)"/>


<xsl:template name="modifyDefinition">
 <xsl:param name="counter"/>
 <xsl:param name="outputDefinition"/>
 <xsl:param name="howManyTerms"/>

<xsl:when test="$howManyTerms >= 1">
<xsl:variable name="anchor" select="child::linkTo[position()=$counter]/@termtolink"/>
<xsl:variable name="textBeforeWord" select = "substring-before($outputDefinition,$anchor)"/>
<xsl:variable name="textAfterWord" select = "substring-after($outputDefinition,$anchor)"/>

<xsl:variable name="outputDefinition" select="concat($textBeforeWord,$anchorOpen,$anchor,$italicOpen,$anchor,$italicClose,$anchorClose,$textAfterWord)"/>

   <xsl:call-template name="modifyDefinition">
        <xsl:with-param name="counter" select="$counter+1"/>
        <xsl:with-param name="outputDefinition" select="$outputDefinition"/>
        <xsl:with-param name="howManyTerms" select="$howManyTerms - 1"/>

<DD><xsl:value-of select="$outputDefinition"/></DD> <br></br> <br></br>

At 01:06 PM 3/10/2005 -0600, JBryant@xxxxxxxxx wrote:
You mention that you need to have entities inside the variable. However,
without seeing more of your XML and XSL and knowing more about what you
want to produce, I don't see the need for the entities inside the
variable. The variable could contain just the href value, in which case
you could do this:

<dd><a href="{$variable1}">Link text (from another variable,

If you show us more about why you need to have the entities in the
variable, perhaps we can offer more help.

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)

Carmelo Montanez <carmelo@xxxxxxxx> 03/10/2005 12:46 PM Please respond to xsl-list@xxxxxxxxxxxxxxxxxxxxxx

To xsl-list@xxxxxxxxxxxxxxxxxxxxxx cc

[xsl] Variables and HTML


I am sure this been debated before to the ground.  I have
a variable that have entities as part of its contents as in the

variable1 = "&lt; A href = ....."

I am trying to output this as html

<dd><xsl:value-of select = "$variable1"/></dd>

The problem is that when I get the HTML, I still have the entities
inside the variables causing the HTML browser to display the wrong thing

My final HML looks something like this:

<DD>A &lt;a href="Ballot"&gt;&lt;i&gt;Ballot&lt;/i&gt;&lt;/a&gt; prepared
or &lt;a href="cast"&gt;&lt;{i&gt;cast&lt;/i&gt;&lt;/a&gt; by a voter
than at a regular polling place.</DD>

I will like to have all those entities resolved.  I need to use the
entities inside the
variable because I am doing a lot of manipulations with it.


Current Thread