XSL is a language for describing the style of a document, much like CSS (Cascading Style Sheets); however XSL is used to style XML (eXtensible Mark-up Language) documents. The syntax differs from CSS, yet can achieve the same results. In addition to this, XSL can be used as a transformation language (XSLT), and it can also use advanced styling, through using formatting objects, and building further on CSS.
XSL is only the visual half of the page you want to see. Behind the styling there is an XML document containing the content that you wish to show. The XSL will not contain any data, just as the XML will not contain any visual instructions.
An example of an XML document is laid out below:
< day>
< AM>< Breakfast>Cereals< /Breakfast>
< snack>Chocolate< /snack>< / AM>
< PM< lunch>Sandwich< /lunch>< snack>Crisps< /snack>
< dinner>Roast< /dinner>< / PM>
< / day>
The document has a logical meaning from looking at the English words which create the structure. This data could represent something like a typical day's food consumption.
This raw data could now be viewed on any Java enabled device, from a handheld to a supercomputer. Viewing it in this state would render an output similar to the raw data above. XSL would style this, creating a visually pleasing structure, with different fonts, colours, background images, etc. It could even display the data in a form other than a tree, perhaps grouping the AM and PM items together in boxes.
< xsl:template match="AM">
< fo:block font-weight="bold">
< xsl:apply-templates/>
< /fo:block>
< /xsl:template>
< xsl:template match="PM">
< fo:block font-style="italic">
< xsl:apply-templates/>< /fo:block>
< /xsl:template>
This would make all AM elements appear in a bold type face, and all PM in italics.
XSL and CSS are different because XSL uses XML notation, whereas CSS uses its own. Most modern web browsers support both languages, and the industry and W3C seem to indicate that it is necessary to continue the support for both. Each language seems to be able to cope well with different functions - it's even possible to use both languages; XSLT on the server to take data from a larger XML source, and compress to a smaller XML file to transfer to the client machine, and then CSS to style this data on a website, or web based interface.
XSL can be used both server-side and client-side, so it is down to the developer to choose when to implement the file. Developers should look into both the pros and cons for each of these options however, as various combinations of converted files can leave the source code a mass of FONT and BR tags, echoed directly from the XSL/XML mix up which could be created.