You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Brian Minchau (JIRA)" <xa...@xml.apache.org> on 2006/04/07 07:42:29 UTC

[jira] Created: (XALANJ-2291) XSTLC doesn't handle islands of XML in HTML correctly

XSTLC doesn't handle islands of XML in HTML correctly
-----------------------------------------------------

         Key: XALANJ-2291
         URL: http://issues.apache.org/jira/browse/XALANJ-2291
     Project: XalanJ2
        Type: Bug

  Components: Serialization  
    Versions: Latest Development Code    
    Reporter: Brian Minchau
    Priority: Minor


At least for this testcase:
<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  version="1.0" xmlns="http://myco.com" >
<xsl:output method="html"/>

<xsl:template match="/">
<HTML><br/></HTML>
</xsl:template>

</xsl:stylesheet>


XSLTC outputs:
<HTML xmlns="http://myco.com">
<br>
</HTML>

But the correct output is:
<HTML xmlns="http://myco.com">
<br />
</HTML>

The element "br" is in the non-null namespace URI "http://myco.com" due to the default namespace declaration. 

See section 16.2 of the XSLT 1.0 recommendation ( http://www.w3.org/TR/xslt#section-HTML-Output-Method ),  says:
<<
The html output method should not output an element differently from the xml output method unless the expanded-name of the element has a null namespace URI; an element whose expanded-name has a non-null namespace URI should be output as XML.
>>

The bug seems to be that both the startElement() and endElement() calls on the serializer pass a URI of null. But the serializer seems to take this to mean that the element is in no namespace.  This is not what null means on these calls. It means "I don't know what the URI is.  The serializer could do a little extra work to figure out the default namespace.  Indeed there is code already in the serializer.  In SerializerBase there is code like this when determining if the current element is a cdata section:
            if ( m_elemContext.m_elementURI == null) {
                
                m_elemContext.m_elementURI = getElementURI();
            }

Looks like something similar might save the day for endElement(String name)  here.

I must give credit to Erin H. for finding this bug, and for the fix too. Maybe one day she will be a committer, but for now she is a contributor.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org


[jira] Commented: (XALANJ-2291) XSTLC doesn't handle islands of XML in HTML correctly

Posted by "Brian Minchau (JIRA)" <xa...@xml.apache.org>.
    [ http://issues.apache.org/jira/browse/XALANJ-2291?page=comments#action_12420650 ] 

Brian Minchau commented on XALANJ-2291:
---------------------------------------

Assigned to Brian M. per the bug triage on July 11, 2006.

> XSTLC doesn't handle islands of XML in HTML correctly
> -----------------------------------------------------
>
>          Key: XALANJ-2291
>          URL: http://issues.apache.org/jira/browse/XALANJ-2291
>      Project: XalanJ2
>         Type: Bug

>   Components: Serialization, XSLTC
>     Versions: Latest Development Code
>     Reporter: Brian Minchau
>     Assignee: Brian Minchau
>     Priority: Minor

>
> At least for this testcase:
> <?xml version="1.0"?> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
>   version="1.0" xmlns="http://myco.com" >
> <xsl:output method="html"/>
> <xsl:template match="/">
> <HTML><br/></HTML>
> </xsl:template>
> </xsl:stylesheet>
> XSLTC outputs:
> <HTML xmlns="http://myco.com">
> <br>
> </HTML>
> But the correct output is:
> <HTML xmlns="http://myco.com">
> <br />
> </HTML>
> The element "br" is in the non-null namespace URI "http://myco.com" due to the default namespace declaration. 
> See section 16.2 of the XSLT 1.0 recommendation ( http://www.w3.org/TR/xslt#section-HTML-Output-Method ),  says:
> <<
> The html output method should not output an element differently from the xml output method unless the expanded-name of the element has a null namespace URI; an element whose expanded-name has a non-null namespace URI should be output as XML.
> >>
> The bug seems to be that both the startElement() and endElement() calls on the serializer pass a URI of null. But the serializer seems to take this to mean that the element is in no namespace.  This is not what null means on these calls. It means "I don't know what the URI is.  The serializer could do a little extra work to figure out the default namespace.  Indeed there is code already in the serializer.  In SerializerBase there is code like this when determining if the current element is a cdata section:
>             if ( m_elemContext.m_elementURI == null) {
>                 
>                 m_elemContext.m_elementURI = getElementURI();
>             }
> Looks like something similar might save the day for endElement(String name)  here.
> I must give credit to Erin H. for finding this bug, and for the fix too. Maybe one day she will be a committer, but for now she is a contributor.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org


[jira] Assigned: (XALANJ-2291) XSTLC doesn't handle islands of XML in HTML correctly

Posted by "Brian Minchau (JIRA)" <xa...@xml.apache.org>.
     [ http://issues.apache.org/jira/browse/XALANJ-2291?page=all ]

Brian Minchau reassigned XALANJ-2291:
-------------------------------------

    Assign To: Brian Minchau

> XSTLC doesn't handle islands of XML in HTML correctly
> -----------------------------------------------------
>
>          Key: XALANJ-2291
>          URL: http://issues.apache.org/jira/browse/XALANJ-2291
>      Project: XalanJ2
>         Type: Bug

>   Components: Serialization, XSLTC
>     Versions: Latest Development Code
>     Reporter: Brian Minchau
>     Assignee: Brian Minchau
>     Priority: Minor

>
> At least for this testcase:
> <?xml version="1.0"?> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
>   version="1.0" xmlns="http://myco.com" >
> <xsl:output method="html"/>
> <xsl:template match="/">
> <HTML><br/></HTML>
> </xsl:template>
> </xsl:stylesheet>
> XSLTC outputs:
> <HTML xmlns="http://myco.com">
> <br>
> </HTML>
> But the correct output is:
> <HTML xmlns="http://myco.com">
> <br />
> </HTML>
> The element "br" is in the non-null namespace URI "http://myco.com" due to the default namespace declaration. 
> See section 16.2 of the XSLT 1.0 recommendation ( http://www.w3.org/TR/xslt#section-HTML-Output-Method ),  says:
> <<
> The html output method should not output an element differently from the xml output method unless the expanded-name of the element has a null namespace URI; an element whose expanded-name has a non-null namespace URI should be output as XML.
> >>
> The bug seems to be that both the startElement() and endElement() calls on the serializer pass a URI of null. But the serializer seems to take this to mean that the element is in no namespace.  This is not what null means on these calls. It means "I don't know what the URI is.  The serializer could do a little extra work to figure out the default namespace.  Indeed there is code already in the serializer.  In SerializerBase there is code like this when determining if the current element is a cdata section:
>             if ( m_elemContext.m_elementURI == null) {
>                 
>                 m_elemContext.m_elementURI = getElementURI();
>             }
> Looks like something similar might save the day for endElement(String name)  here.
> I must give credit to Erin H. for finding this bug, and for the fix too. Maybe one day she will be a committer, but for now she is a contributor.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org