xsl-list
[Top] [All Lists]

Attribute value quoting with Saxon8

2005-08-19 13:51:32
I am trying to change some web pages for an embbeded device from ancient
HTML to XML which should ease changes of the resulting pages.
The resulting pages will be _not_ valid  HTML because they are parsed by
the HTTP server of the device and then the hopefully valid result will
be returned to the browser.

However I have some trouble to create attributes which values are in
double qoutes if the value itself contains double qoutes.

My environment:
     JDK 1.5.0_04 (on WinXP)
     Saxon-B 8.5

Any help is greatly appreciated.

Kindest regards,
Victor

test.xml
------------------

<?xml version="1.0" encoding="UTF-8"?>

<test>
        <a>
                <attribute name="href"><![CDATA[<% get_href(); %>]]></attribute>
                <text>Works</text>
        </a>

        <a>
                <attribute name="href"><![CDATA[<% get_value("href"); 
%>]]></attribute>
                <text>Doesn't work as expected</text>
        </a>
</test>


test.xsl
------------------

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        version="2.0"
>

<xsl:param name="file"/>

<xsl:output
        encoding="UTF-8"
        method="xhtml"
        indent="yes"
        use-character-maps="cm1"
/>

<xsl:character-map name="cm1">
        <xsl:output-character character="&#160;" string="&amp;nbsp;"/>
        <xsl:output-character character="&#xE001;" string="&lt;"/>
        <xsl:output-character character="&#xE002;" string="&gt;"/>
        <xsl:output-character character="&#xE003;" string="&amp;"/>
        <xsl:output-character character="&#xE004;" string="&quot;"/>
</xsl:character-map>

<xsl:template match="attribute"><!--
--><xsl:attribute name="{(_at_)name}"><xsl:value-of select="translate(.,'&lt;&gt;&amp;&quot;','&#xE001;&#xE002;&#xE003;&#xE004;')"/></xsl:attribute><!--
 --></xsl:template>

<!--
        just copy all nodes without a specialized template
 -->
<xsl:template match="*|@*"><xsl:copy><xsl:apply-templates select="@*"/><xsl:apply-templates/></xsl:copy></xsl:template>

<!--
        normalize excessive use of whitespaces
 -->
<xsl:template match="text()">
        <xsl:if test="string-length(normalize-space(.)) != 0">
<xsl:if test="starts-with(.,' ')"><xsl:text> </xsl:text></xsl:if><xsl:value-of select="normalize-space(.)"/><xsl:if test="ends-with(.,' ')"><xsl:text> </xsl:text></xsl:if>
        </xsl:if>
</xsl:template>

</xsl:stylesheet>


test-result.html
------------------

<?xml version="1.0" encoding="UTF-8"?><test>
   <a href="<% get_href(); %>">
      <text>Works</text>
   </a>
   <a href='<% get_value("href"); %>'>
      <text>Doesn't work as expected</text>
   </a>
</test>

test-expected.html
------------------

<?xml version="1.0" encoding="UTF-8"?><test>
   <a href="<% get_href(); %>">
      <text>Works</text>
   </a>
   <a href="<% get_value("href"); %>">
      <text>Doesn't work as expected</text>
   </a>
</test>



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>