[Top]
More advice for the full screen mode.
   
I list below all topic groups, which I have done according to subjects, which they handle. You can return to this topic group by using this menu and the link Table of topic groups on the top of the each page.
 
 
Search:
[Help]
Table of topic groupsFront page of CSS-guideExtra pagesProposalsMore powerful XSL? > An open letter to the XSL working group of W3C (section 1/

An open letter to the XSL working group of W3C

When CSS2 could be used with its all power in XSL, HTML 4.0, XML and XSL documents could use into presentations same files and all would be powerful. What I mean, I'll give you an example from the XSL Developer's Guide of Microsoft; Auction3.xml:

<BLOCKQUOTE>
<?xml version="1.0"?>
<AUCTIONBLOCK>
<ITEM>
<TITLE>Still Life / Onions</TITLE>
<ARTIST>Linda Mann</ARTIST>
<DIMENSIONS>20x30 inches</DIMENSIONS>
<MATERIALS>Oil</MATERIALS>
<YEAR>1997</YEAR>
<DESCRIPTION>Still Life</DESCRIPTION>
<PREVIEW-SMALL src="onio-s.jpg" width="300" height="204" alt="Still Life / Onions"/>
<BIDS><BID>
<PRICE>4800</PRICE>
<TIME>10:54:36 AM</TIME>
<BIDDER>John</BIDDER>
<TIMESTAMP>1944</TIMESTAMP>
</BID>
<BID> <PRICE>4700</PRICE>
<TIME>10:32:30 AM</TIME>
<BIDDER>opening price</BIDDER>
<TIMESTAMP>1904</TIMESTAMP>
</BID>
</BIDS>
<TIMESTAMP>1974</TIMESTAMP>
</ITEM>
</AUCTIONBLOCK>

The author apply XSLT-files to this file presumably by using DHTML. One of the alternative templates is now in a table. I give my proposal, how it would be more powerful.

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl= "http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">

<DIV STYLE="padding:.3in .1in .3in .3in; font-family:Arial Black; background-color:chocolate; background-image=URL(swallows.jpg)">
<xsl:for-each select= "AUCTIONBLOCK/ITEM">

<TABLE>
<TR>
<TD COLSPAN="2">
<IMG STYLE= "border: 1px solid black">
<xsl:attribute name= "src">
<xsl: value-of select= "PREVIEW-SMALL/@src"/>
</xsl:attribute>
<xsl:attribute name="width">
<xsl: value-of select= "PREVIEW-SMALL/@width"/>
</xsl:attribute>
<xsl:attribute name= "height">
<xsl: value-of select= "PREVIEW-SMALL/@height"/>
</xsl:attribute>
<xsl:attribute name="alt">
<xsl: value-of select= "PREVIEW-SMALL/@alt"/>
</xsl:attribute>
</IMG>
</TD>
<TD STYLE= "padding-left:1em">
<DIV STYLE= "margin-left:2em; text-indent:-1.5em; line-height:80%; font-size:18pt; color:yellow">
<xsl:value-of select="TITLE"/>
</DIV>
<DIV STYLE= "margin-left:2em; text-indent:-1.5em; line-height:80%; margin-top:1em; font-style:italic; font-size:18pt; color:yellow">
<xsl:value-of select= "ARTIST"/>
</DIV>
</TD>
</TR>
<TR>
<TD>
<DIV STYLE="color:white; font:10pt. Verdana; font-style:italic; font-weight:normal">
Size:
<xsl:value-of select="DIMENSIONS"/>
</DIV>
</TD>
<TD>
<DIV STYLE="text-align:right; color:white; font:10pt. Verdana; font-style:italic; font-weight:normal">
<xsl:value-of select= "MATERIALS"/>
<xsl:value-of select="YEAR"/>
</DIV>
</TD>
<TD>
</TD>
</TR>
<TR>
<TD COLSPAN="2">
<DIV STYLE="margin:2px; padding:0em .5em; background-color:orange; color:white">
High bid:$
<xsl:value-of select= "BIDS/BID[1]/PRICE"/>
<SPAN STYLE= "color:yellow">
(<xsl:value-of select= "BIDS/BID[1]/BIDDER"/>)
</SPAN>
</DIV>
<DIV STYLE= "margin:2px; padding:0em .5em; background-color:orange; color:white">
Opening bid: $
<xsl:value-of select= "BIDS/BID[end()]/PRICE"/>
</DIV>
</TD>
<TD STYLE= "text-align:right; font:10pt Verdana; font-style:italic; color:yellow">
<DIV STYLE= "margin-top:.5em">
Copyright © 1997 Linda Mann, all rights reserved.
</DIV>
<DIV STYLE= "font-weight:bold">
<A HREF= "http://home.navisoft.com/
lindamann/" target="_top">
Linda Mann Art Gallery
</A>
</DIV>
</TD>
</TR>
</TABLE>

</xsl:for-each>
</DIV>

</xsl:template>
</xsl:stylesheet>
What I don't like in this template:
  • All CSS-properties are only used style attributes (like STYLE="margin: 2px;...") - the weakest way to use CSS. I have made a XSLT file by using an external style sheets.
  • Netscape 4.x crash using certain CSS-properties. If all properties are given directly, they cause serious problems to Netscape 4.x or only very limited quantity of properties can be used. Using external style sheets, this problem can be solved by using the import rule[S].
  • In this example XSL-template has been used an-standard "CSS". That means non-CSS definitions, which are like real CSS. Thy are only proprietary solutions (background-color:chocolate; has a proprietary color-property; background-image=URL(swallows.jpg) has a proprietary syntax).
  • The template is extremely long.
  • Using these kind of templates, I should make always many structures (XML structure and several XSL template structures), if I want different variations.
What I wanted to do:
  • Use external CSS-files
  • Use display properties of CSS2 in order to exchange the structure of the template without touching to the template.
  • Use powerful CSS2 level matching patterns, which I could use also in HTML files.
  • More pseudo classes to CSS3, which could use in HTML, XML and XSL documents
    • :second-child pseudo-class, :third-child pseudo-class and so on
    • :second-sibling pseudo-class, :third-sibling pseudo-class and so on
    • :paired-paragraph pseudo-class; an-paired-paragraph pseudo-class

In order to get really poweful system, there is need to be three level system:

The whole system should be cascading!

When XSL could perform bigger structure exchanges CSS could perform fine tuning with display properties. It is remarkable, that CSS2 attribute selectors works at the same principle as XML. This works [foo="foo"]{background-color:yellow} in, if some element has the attribute with the exact value foo="foo". I doesn't need to mean anything.

XSLT is not a problem, if all elements are transformed as HTML-elements. Problem of XML lies on the incompatibility of own elements and they are not trasformed. But why XML could not base on attributes? Why this could not to be useful: <LI item="price"> (I have made this kind of definition to this paragraph and Mozilla Gecko displays this paragraph differently as other paragraphs) instead of XML element <PRICE> . Examples of possible CSS2 level patterns:

UL [item="price"] {display:list-item;list-style-image:balloon.gif}
/* or table display */
P {display:table} /* or some other ancestor element */
UL {display:table-tr}
LI [item="price"] {display:table-td;border: 1px solid olive; }

Or should it be a little bit different as normal attributes like this way <LI elem:price >, which is something between existing HTML and XML syntax. The defination in the DTD it is like to an element, which have a prefix (<!ELEMENT LI:price...>).

CSS2 attribute selectors are exact and powerful. Pattern matching in XSL and CSS is powerful why not build everything on them! Iin future with CSS3 might have the possibility to exchange the order elements? Is the only matter, that there is remarkable quantity of missing features on the CSS-implementation of MS IE 5.0! It just can't make proper presentation with CSS.

Because the original XML file is translated into XHTML-file, it is not easy to use searching patterns, which base on the original XML elements. Some parts of them can be nested inside XHTML elements, so those elements can be used in searching patterns. But for example this searching pattern /MATERIAL/YEAR is not necessary available with the XHTML files. But this example pattern can be used like "embedded" in the XHTML file like in the next example is used elements logbase and ci, when the searching pattern /logbase/ci can be used. But If only few searching patterns are available, is it reasonable to use XML + CSS + XSLT > XHTML + CSS combination!

This could be called as an embedded XML part inside XHMTL-document:

<html xmlns="http://www.w3.org/TR/xhtml1/">
<head>
<title>A Math Example</title>
</head>
<body>
<p>
The following is MathML markup:</p>
<math xmlns="http://www.w3.org/TR/REC-MathML>
<apply> <log/>
<logbase>
<cn> 3 </cn>
</logbase>
<ci> x </ci>
</apply>
</math>
</body>
</html>

And I don't believe, that XPath pattern matching would newer work properly. I added another section about this matter. It is not a proposal but just a comment page.

And JavaScript/ECMAScript needs a new Model[S] and there is then a need of new DOM!

[Top]