php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9923 Wrong behavior of xsl output method 'html'
Submitted: 2001-03-22 09:41 UTC Modified: 2001-04-28 15:52 UTC
From: A dot Veremyev at turck dot spb dot ru Assigned:
Status: Closed Package: Sablotron XSL
PHP Version: 4.0.3pl1 OS: Linux
Private report: No CVE-ID: None
 [2001-03-22 09:41 UTC] A dot Veremyev at turck dot spb dot ru
The "W3C Recommendation 16 November 1999" says:
-----------------------------
The html output method should not perform escaping for the content of the script and style elements. For example, a literal result element written in the stylesheet as

<script>if (a &lt; b) foo()</script>
or
<script><![CDATA[if (a < b) foo()]]></script>

should be output as
<script>if (a < b) foo()</script>

[...]
-----------------------------

But Sablotron's xslt_run() function outputs
'if (a &lt; b) foo()'

It also violates other constraints described in the section 16.2 HTML Output Method (http://www.w3.org/TR/xslt#section-HTML-Output-Method) of the "W3C Recommendation 16 November 1999".

---------------------------------------------------------

Example:
------ test1.php -------------------------------
<?php

 $parser = xslt_create(); 

 xslt_run($parser, './test1.xsl', './test1.xml'); 

 print xslt_fetch_result($parser); 
 xslt_free($parser); 
?>
------------------------------------------------
------ test1.xml -------------------------------
<?xml version="1.0"?>
<articles>
  <article>
      <title>Title 1</title>
      <author>Author 1</author>
      <comment>
         Comment 1
      </comment>
  </article>
  <article>
      <title>Title 2</title>
      <author>Author 2</author>
      <comment>
         Comment 2
      </comment>
  </article>
</articles>
------------------------------------------------
------ test1.xsl -------------------------------
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>


<xsl:template match="/">
  <html>
   <xsl:apply-templates/>
  </html>
</xsl:template>


<xsl:template match="articles">
   <HEAD>
     <TITLE>XML/XSLT test
      </TITLE>

     <script>if (a &lt; b) foo()</script>

     <script><![CDATA[if (a < b) foo()]]></script>

   </HEAD>

   <body>
     <H1>Test</H1>
     <hr/>

     <table border="1">
       <xsl:apply-templates select="article"/>
     </table>
   </body>
</xsl:template>

<xsl:template match="article">
	<tr>
            <td width="30%">
             <xsl:value-of select="title"/>
            </td>
            <td width="20%">
                <xsl:value-of select="title"/>
            </td>
            <td width="20%">
                <xsl:value-of select="comment"/>
            </td>
        </tr>
</xsl:template>

</xsl:stylesheet>
------------------------------------------------
------ output ----------------------------------
<html><HEAD><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><TITLE>XML/XSLT test
      </TITLE><script>if (a &lt; b) foo()</script><script>if (a &lt; b) foo()</script></HEAD><body><H1>Test</H1><hr><table border="1"><tr><td width="30%">Title 1</td><td width="20%">Title 1</td><td width="20%">
         Comment 1
      </td></tr><tr><td width="30%">Title 2</td><td width="20%">Title 2</td><td width="20%">
         Comment 2
      </td></tr></table></body></html>
------------------------------------------------



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-03-22 11:49 UTC] joey@php.net
If I'm reading this correctly, you are complaining about
Sablotron's behavior, not PHP's, right?

PHP Team is not responsible for Sablotron. Please
repor this bug to sablotron team.
 [2001-04-28 15:52 UTC] jmoore@php.net
No feedback (I belive this was found to be a slabtron issue)

closing.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Oct 05 19:01:27 2024 UTC