Tim, Dimitry,

 This looks like a problem in XSLTC. It is checking the context of an
xsl:attribute and trying to be smart as to whether is misplaced or not. The
requirement is for attributes to be output before children. The stylesheet
is OK, but in general a call to xsl:apply-templates *may* add children (e.g.
text nodes) to which an attribute cannot be associated.

 Try commenting out line 142 in xsltc/compiler/XslAttribute.java and see
what happens (_ignore = true). Obviously, this heuristic must be revisited
(I think the warning is OK, ignoring the attribute is not).

-- Santiago

----- Original Message -----
From: "Tim Cronin" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, March 19, 2003 1:41 PM
Subject: RE: xsl behavior


> Thanks,
>
> Yes I'm using org.apache.xalan.xsltc.trax.TransformerFactoryImpl
>
> it's ignoring the attribute setting. the font never get set to
> red. If I remove the apply templates line it does work and
> of course the warning goes away.
>
> the font template is used to set other font attributes.
> the color attrib needs to be after it in order to over ride
> the default set by the font template.
>
> -----Original Message-----
> From: Voytenko, Dimitry [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 19, 2003 12:03 PM
> To: 'Tim Cronin'; [EMAIL PROTECTED]
> Subject: RE: xsl behavior
>
>
> Hi,
>
> Is that XSLTC then? Interpretive Xalan works fine. XSLTC does output
warning
> saying:
> Compiler warning(s):
> file:///...../test/att.xsl: line 8: Attribute 'color' outside of
> element.
>
> The stylesheet is fine by XSLT specs, but potentially there can be a
> problem. May be that's what this message is intended to say. I don't see
any
> way how the _compiler_ can actually diagnose this kind of problem with
> xsl:apply-templates inside. Such an error can be only cought in run-time
in
> this case.
>
> Thanks,
> Dimitry
>
> -----Original Message-----
> From: Tim Cronin [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 19, 2003 09:40
> To: [EMAIL PROTECTED]
> Subject: RE: xsl behavior
>
>
> 2.5D1
>
> -----Original Message-----
> From: Joseph Kesselman [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 19, 2003 11:36 AM
> To: Tim Cronin
> Subject: Re: xsl behavior
>
> ><xsl:attribute> must generate its output as the child of an element
> >(either literal result element or <xsl:element> and must precede any
> >non-attribute children.
>
> it is the child of an element, the font template just generates
attributes.
>
> >Try generating the attribute _before_ calling <xsl:apply-templates>.
>
> with the attrib before, the template always overrides it.
>
> the attrib was below the template in order to override what the template
set
> depending
> on the xsl:if.
>
>
> -----Original Message-----
> From: Voytenko, Dimitry [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 19, 2003 11:45 AM
> To: 'Tim Cronin'; [EMAIL PROTECTED]
> Subject: RE: xsl behaviour
>
>
> Hi Tim,
>
> What's the version of Xalan you're using?
>
> Thanks,
> Dimitry
>
> -----Original Message-----
> From: Tim Cronin [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 19, 2003 08:29
> To: [EMAIL PROTECTED]
> Subject: xsl behaviour
>
>
> given the following Stylesheet
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>   <xsl:template match="/">
>   <FONT>
>     <xsl:apply-templates select="/Properties/[EMAIL PROTECTED]'Data
> Properties']/[EMAIL PROTECTED]'Font']/Font"/>
>     <xsl:attribute name="color"><xsl:if
> test="[EMAIL PROTECTED]'QuantityShort']&lt;0">Red</xsl:if></xsl:attribute>
>     <xsl:value-of select="[EMAIL PROTECTED]'QuantityOnOrder']"/>
>   </FONT>
>   </xsl:template>
>   <xsl:template match="Font">
>     <xsl:attribute name="face"><xsl:value-of
> select="@Family"/></xsl:attribute>
>     <xsl:attribute name="color"><xsl:value-of
> select="@Color"/></xsl:attribute>
>     <xsl:attribute name="style">font-size:<xsl:value-of select="@Size"/>;
> font-style:<xsl:value-of select="@Style"/>;font-weight:<xsl:value-of
> select="@Weight"/>;</xsl:attribute>
>   </xsl:template>
> </xsl:stylesheet>
>
> I get a transformation warning saying that "Attribute color is outside of
> element"
> refering to this line:
> <xsl:attribute name="color"><xsl:if
> test="[EMAIL PROTECTED]'QuantityShort']&lt;0">Red</xsl:if></xsl:attribute>
>
> the problem is within the font section
>   <FONT>
>     <xsl:apply-templates select="/Properties/[EMAIL PROTECTED]'Data
> Properties']/[EMAIL PROTECTED]'Font']/Font"/>
>     <xsl:attribute name="color"><xsl:if
> test="[EMAIL PROTECTED]'QuantityShort']&lt;0">Red</xsl:if></xsl:attribute>
>     <xsl:value-of select="[EMAIL PROTECTED]'QuantityOnOrder']"/>
>   </FONT>
>
> under MS this worked OK...
> should I be able to do this?
>
>
> _____________________________________________________
> Revere Data, LLC, formerly known as Sector Data, LLC, is not affiliated
with
> Sector, Inc., or SIAC.
>
>
> _____________________________________________________
> Revere Data, LLC, formerly known as Sector Data, LLC, is not affiliated
with
> Sector, Inc., or SIAC.

Reply via email to