I have observed an inconsistency in the escaping of characters while
migrating from a xalan-1 to xalan-2, 2.5.0. Here is a snippet of the
stylesheet:

  <xsl:output method="html" indent="yes" doctype-public="-//W3C//DTD HTML
4.0 Transitional//EN"/>
...
<xsl:attribute name="href"><![CDATA[?NewPatient=true&PatientName
=]]><xsl:value-of disable-output-escaping="yes"
              select="$PatientName"/><![CDATA[&UnitNum=]]><xsl:value-of
disable-output-escaping="yes"
              select="$UnitNum"/><![CDATA[&MRNumber=]]><xsl:value-of
disable-output-escaping="yes"
              select="$MRNumber"/><![CDATA[&Sex=]]><xsl:value-of
disable-output-escaping="yes"
              select="$Sex"/><![CDATA[&BirthDate=]]><xsl:value-of
disable-output-escaping="yes"
              select="$BirthDate"/><![CDATA[&RawDate=]]><xsl:value-of
disable-output-escaping="yes"
              select="$RawDate"/><![CDATA[&DeathDate=]]><xsl:value-of
disable-output-escaping="yes"
              select="$DeathDate"/>

in xalan-1 it produced the following html:

href="?NewPatient=true&amp;PatientName=DOE,
JANE&amp;UnitNum=10088&amp;MRNumber=CC753422&amp;Sex=F&amp;BirthDate=&nbsp;
&amp;RawDate=&amp;DeathDate=&nbsp;

in xalan 2.5.0 it produced:

?NewPatient=true&PatientName=DOE,
JANE&UnitNum=10088&MRNumber=CC753422&Sex=F&BirthDate=&RawDate
=%C2%A0&DeathDate=%C2%A0

If I understand the stylesheet correctly; escaping should not occur at all
because of CDATA and disable-output-escaping. In xalan-1 escaping did
occur; but in xalan-2; it appears that it does not occur. Was this
something that was fixed or am I not understanding something? It looks like
I'll have to change this stylesheet to allow escaping to occur.

The dates are being selected as follows in the stylesheet:
      <xsl:template name="DOB">
            <xsl:param name="candidate"/>
            <xsl:param name="raw" select="'false'"/>
            <xsl:choose>
                  <xsl:when test="$raw!='true'">
                        <xsl:call-template name="DATE">
                              <xsl:with-param name="RawDate" select
="$candidate/memberInfo/dateOfBirth/birthDate"/>
                        </xsl:call-template>
                  </xsl:when>
                  <xsl:otherwise>
                        <xsl:value-of select
="$candidate/memberInfo/dateOfBirth/birthDate"/>
                  </xsl:otherwise>
            </xsl:choose>
      </xsl:template

The strange characters %C2%A0 are coming back when datOfBirth/birthDate or
dateOfDeath elements are not contained in the xml document being
transformed. Is this a bug?

Appreciate any ideas that may solve this issue.

Keith...



Reply via email to