[daisy] [skin2] Poll for participation and input

hepabolu hepabolu at gmail.com
Tue Sep 25 09:15:19 CDT 2007


Hi,

here are some random thoughts based on things I've seen in other 
websites and/or my experiences with skinning Daisy sites.

Thoughts/suggestions/observations are in random order.

- first of all, make the standard Daisy skin valid XHTML Transitional. 
Coming from valid XML this should not be too hard; my HTML Tidy Firefox 
plugin only reports warnings. The advantage is that debugging the new 
skin is easier, since you know that all errors and warnings are 
introduced by the modifier.

- split XSL and CSS for the editing and for the 'display' environment. 
After extensive changes in the various XSL files I found myself with a 
non-functional editing environment. Also, when you want to style the 
editing environment different from the 'display' environment, it's very 
hard to figure out what should go where when you still want the editor 
to closely match the final display.

- add the document id to the final HTML output, e.g. <body 
id='dsy-123-ns'>. This allows page specific CSS styling. I know this 
should not be promoted, since it connects CSS and HTML through the 
document ID, but sometimes you just want to style one page a bit 
different without creating a special documentType for it.
Note that this id should not start with a number, since that is not 
valid in XHTML.

- something that still eludes me: what is the purpose of specific 
documentTypes? To me they hold a specific type of content, e.g. news 
items, a FAQ, whatever. While skinning, I found myself creating a new 
documentType just to be able to introduce a sidebar on certain pages, 
i.e. no special information, just special layout.

- I agree that a new version of the skin system should result in 
something that's easier to modify, thus allowing for various users to 
provide their own skin to the community.

- standardized naming in CSS classes are also welcome. Preferably no 
markup for HTML tags directly, but through classes (i.e. not

table { .... }

but

table.tableMarkup { .... }
)

This makes it easier for designers to change the look and feel without 
touching the XSL, but it also helps in differentiating between the 
editing and the 'display' environment.

- start off with a CSS framework. This is more or less also described at 
the Yahoo site, mentioned in this thread. Proposal:

reset.css - contains tags that reset all margins, padding, font size 
etc. to give you a browser independent starting point

layout.css - contains only layout related attributes (margins, padding etc.)

typography.css - contains only font related attributes (font, size, text 
alignment etc.)

graphics.css - contains only colors and graphics (background, borders, 
colors etc.)

doctypespecific.css - contains specific styling for one or more 
documentTypes.

style.css is basicall the file that call it all:

@import reset.css
@import layout.css
@import typography.css
@import graphics.css

maybe even divide into 'display' and 'edit' files (i.e. 
layout-display.css and layout-edit.css etc.)

This way part of the CSS markup can be changed without touching the 
rest, i.e. reusability as much as possible.

- The Daisy wiki needs to be restarted to pick up a modified query 
styling. This is quite annoying when you want to debug your styling.

- To allow for more flexible styling (i.e. web designers fiddling with 
CSS rather than XSL), the default (X)HTML output should have a default 
layout that allows for skinning, like the page used for the CSS 
Zengarden. This would look something like this (elaborating on Marc's 
example):

<html>
   <xsl:call-template name="insert-daisy-header"    />
   <xsl:call-template name="insert-my-extra-header" />

   <body id="dsy-{$docid}>
     <div id="wrapper">
       <div id="header">
         <!-- masthead/banner etc. -->
       <xsl:call-template name="insert-daisy-navigation" />
       <xsl:call-template name="insert-daisy-breadcrumb" />
       </div>
       <div id="contentwrapper">
         <div id="menu-navigation">
            <xsl:call-template name="insert-menu-navigation"/>
         </div>
         <div id="content>
          <xsl:call-template name="insert-daisy-part" >
           <xsl:with-param name="partName" select="'SimpleContentPart'" />
          </xsl:call-template>
         </div>
         <div id="sidebar">
           <xsl:call-template name="partName" select="'SidebarPart'"/>
         </div>
       </div> <!-- end contentwrapper -->
       <div id="footer">
       <!-- footer info -->
       </div>
    </div> <!-- end wrapper -->
</body>
</html>

Maybe some extra divs are added to provide web designers with some hooks 
for extra images (ala CSS Zengarden). Although Webstandards purists 
would shiver at the thought of inserting non-content related markup.

This template should be compiled in one XSL file, as near to the end of 
the pipeline as possible. I remember that I needed to change 2 or three 
XSL files to come up with something resembling this.

Again, the separation between the 'display' and the editing environment 
should be more distinct than it is now.


- we need a simple fall back mechanism. The current 'add the name of the 
default skin to file XYZ' is much better than before, but not very 
intuitive.


As said before, these are just thoughts, observations and ideas and are 
only meant as input to a brainstorm.

Bye, Helma



More information about the daisy mailing list