[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

AW: Re: match="*:style"

Subject: AW: Re: match="*:style"
From: Merico Raffaele <raffaele.merico@xxxxxxx>
Date: Mon, 25 May 2009 15:56:17 +0200
AW: Re:  match="*:style"
Dear Ken

Many thanks for your answer. I was away for a few days.

Today I added a <xsl:message/> just after the
<xsl:template match="*:style[empty(./*) and normalize-space(./text()) eq
'']">.

You will not believe it, but any @style attribute in the XHTML input was
matched with the above expression.

As you advised me then I changed the condition part
"normalize-space(./text()) eq ''"
  with
"not(normalize-space())".

With the effect, that now no @style attribute is matched anymore.
I do not understand the difference ...

Cheers Raffaele

-----Urspr|ngliche Nachricht-----
Von: G. Ken Holman [mailto:gkholman@xxxxxxxxxxxxxxxxxxxx]
Gesendet: Mittwoch, 20. Mai 2009 16:13
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: [?? Probable Spam] Re:  match="*:style"

At 2009-05-20 15:34 +0200, Merico Raffaele wrote:
>Dear Community
>
>I process HTML/XHTML files passed as input to my XSLT stylesheet. I'm
>working with SaxonB 9.1.0.2.
>In order to catch the <style/> tag in the HTML/XHTML input file I defined
>the following match-rule.
>
><xsl:template match="*:style[empty(./*) and normalize-space(./text()) eq
>'']">

Your use of "./" is redundant in the above, and I'm not in the
practice of addressing text() nodes directly.  I would have used:

    [not(*) and not(normalize-space())]

Alternatively, if I wasn't worried about white-space, just
[not(node())] would test for no child nodes of the element.

>   <xsl:element name="{node-name(current())}"
>namespace="{namespace-uri(current())}">

Use <xsl:copy/> to achieve the above.

>     <xsl:apply-templates select="@*"/>
>       <xslo:value-of select="' '"/>

Are you using namespace aliasing?  It happens I use "xslo:" when I
write stylesheets that write stylesheets.  If so I suspect you want:

    <xslo:text><xsl:text> </xsl:text></xslo:text>

>   </xsl:element>
></xsl:template>
>
>Now I am surprised that above match applies also to style-attributes (i.e.
>style="border: 1px solid red;").

It depends on how you are catching your attributes ... I see you are
pushing them at your stylesheet:

     <xsl:apply-templates select="@*"/>

... but if you don't catch them, then their values will be added to
the result tree as text.

>I can imagine that this is caused by the star in the match.

No.  That is explicitly for elements and not attributes because you
have omitted the axis in the location path step.

>I used the star to mask the namespace-prefix in order match style-tags in
>the null and in the XHTML namespace (without prefix).

Sure.

>Can anybody please explain me why this happens?

I suspect the built-in template rules are catching the attributes you
are pushing at your stylesheet.  But since you aren't showing more of
your stylesheet it is difficult to tell what is happening with your
style attributes because it might be another part of your stylesheet
that is dealing with them.

If you just want to copy attributes, then you need something like
this (untested):

<xsl:template match="*:style[not(*) and not(normalize-space())]">
   <xsl:copy>
     <xsl:copy-of select="@*"/>
     <xslo:text><xsl:text> </xsl:text></xslo:text>
   </xsl:copy>
</xsl:template>

... but I'm confused again because of your use of the "xslo:" prefix.

I hope this helps in some way.

. . . . . . . . . . . Ken

--
XSLT/XSL-FO/XQuery hands-on training - Los Angeles, USA 2009-06-08
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.