[ http://issues.apache.org/jira/browse/XALANJ-2130?page=all ]

Brian Minchau updated XALANJ-2130:
----------------------------------

    Description: 
Section 16. of the XSLT 1.0 recommendation ( see http://www.w3.org/TR/xslt )
says this:
<<
A stylesheet may contain multiple xsl:output elements and may include or import 
stylesheets that also contain xsl:output elements. All the xsl:output elements 
occurring in a stylesheet are merged into a single effective xsl:output 
element. For the cdata-section-elements attribute, the effective value is the 
union of the specified values. For other attributes, the effective value is the 
specified value with the highest import precedence. It is an error if there is 
more than one such value for an attribute. An XSLT processor may signal the 
error; if it does not signal the error, if should recover by using the value 
that occurs last in the stylesheet. 
>>

Even after this is done one can use the JAXP API 
Transformer.setOutputProperty(name,value) or 
Transformer.setOutputProperty(java.util.Properties) to override values in the 
stylesheet, that would be in its "single effective merged xsl:output element".

In the spirit of what the stylesheet does, it would seem that if a 
cdata-section-elements property is set, it should not override the stylesheets 
set of sections, but be a union with it, just as the xsl:output 
cdata-sections-elements form an effective union. This is unlike other 
xsl:output attributes.

The effective xsl:output attributes can be modified with mulitple calls to 
Transformer.setOuputProperty(String name, String value) and/or 
Transformer.setOutputProperty(java.util.Properties)

However the serializer is brittle with respect to multiple such calls namely:
- cdata-section-elements from JAXP do merge with the stylesheets values, they
replace the stylesheets values
- Writers can be lost
- properties with namespaces, where the name part of the property is of the 
form 
"{uri}localname"  are not properly handled, (i.e. it doesn't parse the uri from 
within the curly braces).

The code needs some re-work to make it robust.



  was:

Section 16. of the XSLT 1.0 recommendation ( see http://www.w3.org/TR/xslt )
says this:
<<
A stylesheet may contain multiple xsl:output elements and may include or import 
stylesheets that also contain xsl:output elements. All the xsl:output elements 
occurring in a stylesheet are merged into a single effective xsl:output 
element. For the cdata-section-elements attribute, the effective value is the 
union of the specified values. For other attributes, the effective value is the 
specified value with the highest import precedence. It is an error if there is 
more than one such value for an attribute. An XSLT processor may signal the 
error; if it does not signal the error, if should recover by using the value 
that occurs last in the stylesheet. 
>>

Even after this is done one can use the JAXP API 
Transformer.setOutputProperty(name,value) or 
Transformer.setOutputProperty(java.util.Properties) to override values in the 
stylesheet, that would be in its "single effective merged xsl:output element".

In the spirit of what the stylesheet does, it would seem that if a 
cdata-section-elements property is set, it should not override the stylesheets 
set of sections, but be a union with it, just as the xsl:output 
cdata-sections-elements form an effective union. This is unlike other 
xsl:output attributes.

The effective xsl:output attributes can be modified with mulitple calls to 
Transformer.setOuputProperty(String name, String value) and/or 
Transformer.setOutputProperty(java.util.Properties)

However the serializer is brittle with respect to multiple such calls namely:
- cdata-section-elements from JAXP do merge with the stylesheets values, they
replace the stylesheets values
- Writers can be lost
- properties with namespaces, where the name part of the property is of the 
form 
"{uri}localname"  are not properly handled, (i.e. it doesn't parse the uri from 
within the curly braces).

The code needs some re-work to make it robust.



       reviewer: [EMAIL PROTECTED]

Reviewer set to Henry Z.

> cdata-section-elements are not properly set via JAXP
> ----------------------------------------------------
>
>          Key: XALANJ-2130
>          URL: http://issues.apache.org/jira/browse/XALANJ-2130
>      Project: XalanJ2
>         Type: Bug
>   Components: XSLTC
>     Reporter: Brian Minchau
>     Assignee: Brian Minchau
>  Attachments: cdata-section-elements.patch.jira2130.txt
>
> Section 16. of the XSLT 1.0 recommendation ( see http://www.w3.org/TR/xslt )
> says this:
> <<
> A stylesheet may contain multiple xsl:output elements and may include or 
> import stylesheets that also contain xsl:output elements. All the xsl:output 
> elements occurring in a stylesheet are merged into a single effective 
> xsl:output element. For the cdata-section-elements attribute, the effective 
> value is the union of the specified values. For other attributes, the 
> effective value is the specified value with the highest import precedence. It 
> is an error if there is more than one such value for an attribute. An XSLT 
> processor may signal the error; if it does not signal the error, if should 
> recover by using the value that occurs last in the stylesheet. 
> >>
> Even after this is done one can use the JAXP API 
> Transformer.setOutputProperty(name,value) or 
> Transformer.setOutputProperty(java.util.Properties) to override values in the 
> stylesheet, that would be in its "single effective merged xsl:output element".
> In the spirit of what the stylesheet does, it would seem that if a 
> cdata-section-elements property is set, it should not override the 
> stylesheets set of sections, but be a union with it, just as the xsl:output 
> cdata-sections-elements form an effective union. This is unlike other 
> xsl:output attributes.
> The effective xsl:output attributes can be modified with mulitple calls to 
> Transformer.setOuputProperty(String name, String value) and/or 
> Transformer.setOutputProperty(java.util.Properties)
> However the serializer is brittle with respect to multiple such calls namely:
> - cdata-section-elements from JAXP do merge with the stylesheets values, they
> replace the stylesheets values
> - Writers can be lost
> - properties with namespaces, where the name part of the property is of the 
> form 
> "{uri}localname"  are not properly handled, (i.e. it doesn't parse the uri 
> from within the curly braces).
> The code needs some re-work to make it robust.

-- 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to