Re: [xsl] xsl 2.0?

Subject: Re: [xsl] xsl 2.0?
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 4 Nov 2013 10:45:19 +0000
It's a very common thing in our industry that a simple spec with many
limitations becomes dominant despite the existence of a better spec with more
features designed to meet "high-end" requirements. Just look at rfc-822
compared with x.400 email for an example. Of course some of the better
features of the "complex" spec end up migrating into the "simple" spec, which
in turn has the effect of further reducing the number of people who need the
features of the "complex" spec.

What we seem to be seeing here is that the community that requires XSL-FO
doesn't have the resources to ensure its continued development. Arguments
about why XSL-FO is better than CSS aren't going to change that.

Michael Kay
Saxonica

On 4 Nov 2013, at 10:23, Toshihiko Makita <tmakita@xxxxxxxxxxxxx> wrote:

> Dear Liam Quin,
>
>> It is not really technical but social - CSS is more widely used, and it
>> is easier to find designers who can work in terms of CSS.
>
> It sounds to me that it is hard to judge it to be a rational reason that
people should  move from XSL-FO to CSS.
>
> I want point out the fact that it will not become the benefit using CSS
rather than XSL-FO even if it is widely used than XSL-FO. It is the
maintenance & debugging cost.
>
> Given an last publication A (such as PDF) and there are 500 styles are
needed to make this publication. If we adopt XSL-FO, these styles are all
embed as property of XSL formatting objects.
>
> [Example: DITA authoring snippet]
> <!-- This is only a example. DITA has <b>,<u>,<i> elements. -->
> <p outputclass="b u i">
>  ...
> </p>
>
> [Converted XSL-FO]
> <!-- font-family & font size are the style of "p". The others are obtained
from @outputclass -->
> <fo:block font-family="Arial" font-size="10pt" font-weight="bold"
text-decoration="underline" font-style="italic">
>  ...
> </fo:block>
>
> In the case of CSS all of the styles are written in the another file like
following.
>
> [Converted XHTML]
> <link rel="stylesheet" type="text/css" media="print" href="style_print.css"
/>
>
> <div class="p b u i">
>  ...
> </div>
>
> [style_print.css]
> div.p{font-family:Arial;font-size=10pt;}
> *.b{font-weight:bold;}
> *.u{text-decoration:underline;}
> *.i{font-style:italic;}
>
> If we find unexpected formatting result in the PDF, we can examine XSL-FO
file formatting objects and properties for it.
>
> However in the case of CSS case we must examine all of the CSS styelsheet
file attached and find the selector that are applied to the relevant
formatting result.
>
> Next example shows more complex case:
>
> [Example: DITA authoring snippet]
> <!-- We want to apply color red for first paragraph. Also we want apply blue
for last paragraph. -->
> <body>
>  <p>Paragraph 1</p>
>  <p>Paragraph 2</p>
>  <p>Paragraph 3</p>
> </body>
>
> [XSL-FO stylehesst]
> <xsl:template match="body">
>  <fo:block use-attribute-sets="body" >
>    <xsl:apply-templates select="*"/>
>  </div>
> </xsl:templates>
> <xsl:template match="p">
>  <fo:block use-attribute-sets="p">
>    <xsl:choose>
>      <xsl:when test="position() eq 1">
>        <xsl:attribute name="color" select="'red'"/>
>      </xsl:when>
>      <xsl:when test="position() eq last()">
>        <xsl:attribute name="color" select="'blue'"/>
>      </xsl:when>
>    </xsl:choose>
>    <xsl:apply-templates/>
>  </div>
> </xsl:template>
>
> [Result XSL-FO]
> <fo:block ...>
>  <fo:block font-family="Arial" font-size="10pt" color="red">Paragraph
1</fo:block>
>  <fo:block font-family="Arial" font-size="10pt">Paragraph 2</fo:block>
>  <fo:block font-family="Arial" font-size="10pt" color="blue">Paragraph
3</fo:block>
> </fo:block>
>
> [CSS stylehesst]
> <xsl:template match="body">
>  <div class="body" >
>    <xsl:apply-templates select="*"/>
>  </div>
> </xsl:templates>
>
> <xsl:template match="p">
>  <div class="p">
>    <xsl:apply-templates/>
>  </div>
> </xsl:template>
>
> [XHTML result]
> <div class="body">
>  <div class="p">Paragraph 1</div>
>  <div class="p">Paragraph 2</div>
>  <div class="p">Paragraph 3</div>
> </div>
>
> [Attached CSS stylesheets]
> // CSS programmer will prefer to use below selector than adding new class
value.
> div.p{font-family:Arial;font-size=10pt;}
> div.p:first-child{color:red;}
> div.p:last-child{color:blue;}
>
> In above example it is clear from XSL-FO that the aimed style has been
applied before rendition (formatting) phase. In the CSS case the style is
dynamically applied at rendering (formatting) phase. It needs more effort to
debug the formatting results in CSS than XSL-FO.
>
> The effort for maintaining and debugging for making publication does not
become decreased by adopting of the CSS. Rather it will be increased by its
architecture than XSL-FO especially in debugging.
>
> I heard that production level CSS stylesheet become over 3000 steps. If the
final publication is not so complex, CSS can be a good solution. However
maintaining and debugging the styles for publication by CSS is not so easy
than XSL-FO.
>
> If my opinion has a misunderstanding, please indicate.
>
> Regards,
>
> --
> /*--------------------------------------------------
> Toshihiko Makita
> Development Group. Antenna House, Inc. Ina Branch
> E-Mail tmakita@xxxxxxxxxxxxx
> 8077-1 Horikita Minamiminowa Vil. Kamiina Co.
> Nagano Pref. 399-4511 Japan
> Tel +81-265-76-9300 Fax +81-265-78-1668
> Web site:
> http://www.antenna.co.jp/
> http://www.antennahouse.com/
> --------------------------------------------------*/

Current Thread