Difference between XSL and CSS - css

Maybe this is a stupid question, but what is the difference between XSL and CSS? They are both styling sheets. When would you want to use one over the other. I looked around and saw that CSS is generally used before XSL when possible... but why?

XSL is used to refer to a family of languages used to transform and render XML documents.
CSS is a style sheet language used for describing the presentation semantics (the look and formatting) of a document written in a markup language.
Hence XSL and CSS are not the same and not interchangeable. While XSL languages are used to impact the structure of XML documents (i.e. the arrangement of the tags) CSS is used to impact the visual formatting of those tags.
Edit: There are no stupid questions, just badly researched ones ;)

Assuming you are talking about XSLT rather than "XSL" (the latter term should be avoided because it is used in different ways by different people):
CSS provides a great deal of capability for rendering content. This capability is increasing all the time.
XSLT focuses on transforming content.
For example, you can write a report that groups, sorts, and summarizes data in XSLT, but you can't do so in CSS. Until recently CSS couldn't alter the content in any way, for example by rendering <cite>3</cite> as [3].
You should use XSLT and CSS together. Use CSS for the pure rendering parts of the job, and XSLT for the transformation parts.
With the availability of Saxon-CE in the browser, you can also start to use XSLT for handling user interaction, such as responding to clicks by showing or hiding data: the kind of things you would otherwise have to do in Javascript.

Related

css selectors for AS3

I'm coding some ActionScript 3 app that needs to request some HTML page and analyse it. I am fetching it and parsing as XML - so far so good. Now, I'll have to check for many various things in it and I have no idea how to do that without too much coding and fixed things.
Are there any AS3 methods or libraries, that would allow for quick searching in XML, for example by class/id attribute, preferably using css selectors - i.e. #id .className1 > .className2, etc?
The idea is that I want more maintainability than optimizations, as there's a chance it will involve many changes in the future.
So, are there any libraries or methods that could make querying xhtml easier? Or maybe something open source with css selectors that I could base my code on?
Well, E4X is already built in... and CSS selectors will work on HTML text, if you're going to display it in a text field.
Alright, wrote an AS3 library myself for it: http://code.google.com/p/actionscript-xml-css-selectors/ , it uses E4X. It is LGPL'd, sharing if anyone is used to css selectors as much as I do.

Css,Html,Xml Style Sheet?

I am new to Asp.net and i saw many tutorials talking about css and Html and Xml Style sheet so please can anyone tell me what is the difference between those 3 Languages and what they are used for ? Also i want to know if we need to know HTML since when i was training on visual studio i saw that it is automatically generated when we add a control from the tool box . Thc for any help .
HTML is a markup language for describing the semantics and structure of documents.
CSS is a language for describing how to present documents written in markup languages.
XSL is a collection of specifications for presenting and manipulating documents written in markup languages.
[Do] we need to know HTML since when i was training on visual studio i saw that it is automatically generated when we add a control from the tool box
Yes. Visual Studio generates pretty poor markup.
The WikiPedia pages for HTML, XML and CSS will have a ton of information, as well as links to a ton more information. So I'll just address the second part of the question...
If you're doing web development, it's definitely in your best interests to learn these things, especially HTML. Sure, Visual Studio will generate stuff for you and all you have to do is drag and drop widgets onto a form. However, if you don't actually know what it's doing for you or understand how the tool works then you're seriously limiting yourself.
Sometimes dragging an ASP .NET server control onto the form and setting a few properties is the best (as in quickest and easiest without significant side-effects) way to accomplish a particular task, sometimes it isn't. If you're familiar with only one tool then you can only do what that one tool is designed to do. You'll end up trying to fit other tasks into the scope of that tool, with potentially dismal results.
Visual Studio has a history of generating poor HTML. It's certainly improved over the years, but it's not something on which you want to rely. You can create simpler, more efficient, and ultimately easier to support code by having a better understanding of the underlying technologies involved and putting in a little work yourself.
I think you did not search for these:
HTML - Tutorial
HTML, which stands for HyperText
Markup Language, is the predominant
markup language for web pages. A
markup language is a set of markup
tags, and HTML uses markup tags to
describe web pages. HTML is written in
the form of HTML elements consisting
of "tags" surrounded by angle brackets
(like ) within the web page
content. HTML tags normally come in
pairs like and . The first tag
in a pair is the start tag, the second
tag is the end tag (they are also
called opening tags and closing tags).
Example:
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
Cascading Style Sheets - Tutorial
Cascading Style Sheets (CSS) is a
style sheet language used to describe
the presentation semantics (the look
and formatting) of a document written
in a markup language. Its most common
application is to style web pages
written in HTML and XHTML, but the
language can also be applied to any
kind of XML document, including SVG
and XUL.
Example:
<style type="text/css">
body {color:red;}
h1 {color:#00ff00;}
p.ex {color:rgb(0,0,255);}
</style>
XML - Tutorial
Extensible Markup Language (XML) is a
set of rules for encoding documents in
machine-readable form. It is defined
in the XML 1.0 Specification
produced by the W3C, and several other
related specifications, all gratis
open standards.
Example:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

using table as a layout [duplicate]

This question already has answers here:
Closed 12 years ago.
Possible Duplicate:
Why not use tables for layout in HTML?
i know that using tables as layout is a big problem..Why don’t professional web designers use tables for layout anymore? and what are the alternatives in CSS that i can use and will be the best alternative to tables??
1) as soon as a browser sees an opening table tag, it will stop rendering until it sees the closing tag, since it has no way of even guessing what the table structure will look like. Because of that, tables will dramatically increase the wait time between when the user starts the request, and when they can actually use your page.
2) tables require 3 nested tags to define a cell, which is a hell of a lot of noise in an already incredibly verbose language (xml)
3) semantically, a table is for tabular data. using it for layout means your html doesn't make sense when you read it.
Discussed here - Why not use tables for layout in HTML?
CSS doesn't provide 'alternatives' to tables. It is used to style HTML elements including tables.
Try to learn using div tag and giving style to it using css..it has more effect in look
I would definitely suggest using CSS and XHTML to layout pages.
I think there are far too many benefits to go into here. Ranging from accessibility, SEO, ease of coding to future proofing. I think blog posts and articles on the subject will be able to provide more information on why and how you should use CSS instead of table to layout pages.
One book I would suggest is Web Standards Solutions: The Markup and Style Handbook by Dan Cederholm This book will tell you everything you need to know about using CSS and HTML in a web standards compliant way.
One thing to keep in mind is that HTML5 is starting to gain widespread usage there are a few differences and added features that differ from XHTML

Extract inline CSS from HTML and purify pages

I have a large set (over 300) of C# ASP.NET pages *.aspx and controls *.ascx, which are littered with inline CSS styles. My task is to extract those style into a CSS file.
So I'm looking for a tool to simplify the task of manually extracting this inline styles and replacing them with class="" statements.
Now I know this is not the ideal solution of doing things, but any tool which could ease the task would be helpful.
No tool will write good CSS selectors for you, just like no tool can write good code for you. Yes, you can generate code from templates, but only for the most repetitive of coding tasks. CSS is more art than science, and as such "auto-generation" will not yield good results.
Writing good, clean, lean, maintainable CSS requires an intimate knowledge of the HTML markup, the style & layout that you are trying to achieve, and the skill of identifying patterns across the whole site, such as font, color, h1 headings, presentation of tabular data etc., which are re-used.
Even writing your own script will not produce good CSS. The best you could hope for is to extract all those inline styles, replace them with a unique id or class, and dump them all into a css file. I don't actually see a lot of benefit in that exercise. You actually end up with more code to maintain because of all the extra id's or classes that you will create.
You will not gain consistency of appearance throughout your site from the above exercise, unless you start to consolidate all those unique id's or classes into fewer, more re-used ones, and this is a task best done by hand, not automation anyway. Page load times may improve due to browser caching of the css stylesheet, but thats about all you gain.
Sorry if I've strayed a bit from your question, but your site sounds like it is crying out for you to re-write your CSS from scratch.
Check out CSS Zen Garden for inspiration on what CSS can do, and examples of beautiful CSS, and be inpired!
I would probably opt for using a scripting language with regular expressions. This seems like it would fit especially well with python's list capabilities - for each match to your regex, you can check the list to see if there is a corresponding entry, extract and assign the class from that result, and add each non-listed match to the list to continue building it up.
You can use this tool, it will look for inline style=... definitions replace them with class definitions and generate a style sheet. Hope this is helpful.

XSLT vs CSS for displaying XML

It has been suggested that I use CSS for displaying XML. I know in my heart that this is wrong, but cannot find the words to adequately convince others. Can anyone provide me with a list of pros/cons of using CSS and XSLT for displaying XML.
Thanks!
What your heart tells you is correct. Though it is possible to use CSS for XML, XML itself does not have any semantics. CSS is meant for the web, for HTML and for giving semantic data a (good) look.
XML is way more general then that. XSLT is was invented for transforming one data format to another (XSLT 1.0 only XML, XSLT 2.0 any Unicode data format), i.e., XML to HTML or XML to XSL-FO or another XML or text format. XSL-FO was invented for laying out XML on paper or screen and is much more detailed then CSS.
Some pros and cons on CSS+XML
Mainly cons, esp. in the light of using XML in a browser. Skip to the overall advice below if you don't want all my babbling ;-)
CSS cons 1: no CSS+XML for internet
The cons: it depends a lot on the context, but if you want to use XML for display on the internet, think again: don't use XML, but transform it into HTML. Then use CSS + HTML to display your data. If you use XML on the internet, no search engine or crawler, will understand the difference between <x> and <y>, but they will understand the difference between <h1> and <h2>.
This alone is enough a reason for using XSLT to transform to HTML + CSS and avoid XML on its own.
CSS cons 2: CSS means lots more work
The other extremely big reason you can use: XML + CSS means defining each and every element in CSS. Using HTML + CSS means user agents already know the default layout properties for all elements. Using XML + XSLT means usually you create HTML + CSS. You should do this on server side, because client side XSLT is not very reliable and cross-browser compatible still.
CSS cons 3: accessibility
(sorry, I can't find pros) Unless XML has semantics (SVG, as mentioned by another user), it makes little sense to use CSS for layout. If the layout is supposed to be semantically understood by a user agent, XML + CSS is a no-go. Text-to-speech readers have no idea what to do, WAI (accessibility) validity will be impossible etc.
CSS cons 4: maintainability, understandability, scripting, trouble
Using XML makes it hard to do any client side scripting (yes, the DOM is available, but how do you tell the browser what the script-tag is? But perhaps it'll react to <script>, but hey, you need XSLT to get that tag in there) and makes it hard to make it cross-browser correct (some browsers have a hard time using XML per se). Anything HTML (like meta, title, body, script) will not be available. There's no way to add title attributes or to tell the browser what an image is (afaik).
No script in existence will work on you XML-only page (prototype.js? jquery.js? ajax? no no and no).
Anybody looking at your code will have to learn what each tag "means". Using XSLT to transform to HTML, prevents this. This extra step is beneficial and should be applied whenever you go from XML to browser display.
CSS pros 1: domain specific
If your domain is SVG, SMIL, OD or anything else, you probably already know this: CSS is an integral part of the specification and should be used. This is completely different from pure, possibly unstructured, data XML.
AJAX thought
Just for comparison: any asynchronous AJAX call (should) return XML. But any library working with it, will either interpret it as HTML, or will use XSLT or another means to transform it prior to injecting it in an existing page.
Overall advice
Based on the remark from the OP, we are looking at data XML (not SVG or OpenDocument) and it needs to be displayed in browsers. Accessibility and indexability are not important. But that doesn't really matter: you shouldn't use XML + CSS alone, unless you're really into some adventure and want to find out all the shortcomings of XML in browsers, want to invent every HTML tag again and define each and everything, only to give up after a while and revert to HTML (XML + XSLT == HTML + CSS).
Update: added cons 2
Update: added cons 3 and pros 1
Update: added cons 4, AJAX note and a conclusion
CSS:
Styling and overall visual presentation
XSLT:
Styling and visual presentation (if desired)
Allows complete and radical changes of the actual tree that's rendered
If your XML maps pretty nicely to individual layout elements then use CSS, if you need more work in adapting it for display, then use XSLT. Things like arbitrary re-orderings of content or collapsing multiple lists of values into a table, etc. don't lend themselves well to CSS. CSS really only works nicely if your overall structure of the document is already the same you want to display.
CSS seems to fail for XML in IE8: How to apply CSS to namespace prefixed elements in IE8?
There is nothing inherently wrong with using CSS to style XML, it's just not done very often (although I've done it in the past as an experiment).
Take SVG as an example: it's XML, and it can be styled with CSS. Also, have a look at section 3.1, "Definitions", of CSS 2.1:
Source document
The document to which one or more style sheets apply. This is encoded in some language that represents the document as a tree of elements. Each element consists of a name that identifies the type of element, optionally a number of attributes, and a (possibly empty) content. For example, the source document could be an XML or SGML instance.
Document language
The encoding language of the source document (e.g., HTML, XHTML, or SVG). CSS is used to describe the presentation of document languages and CSS does not change the underlying semantics of the document languages.
(My emphasis).
The primary possibilities to consider in deciding whether whether to use CSS as opposed to XSLT strike me as being:
Does it make sense to transform the XML document into a different structure (e.g. XHTML) the better to represent the semantics of the document?
Is the semantic structure of the document sufficient in itself, such that only presentational styling needs to be applied?
If you have some pretty arbitrary and meaningless XML - something like <data><column><row><value>1</value><value>foo</value></row></column></data> then the XSLT route would make sense. If however you have a document that has its own clearly defined semantics (e.g. an SVG file, or one of any number of XML applications) and all you want to do is make the headings stand out and the font look nice, then CSS is fine.
Ultimately, do the simplest thing that could possibly work. CSS - at least from version 2 onwards - was specifically designed to be language-agnostic (that is, not tied to HTML) so there's no good reason not to use it when it makes sense.
Did they mean a stylesheet? Any XML Stylesheet is different to a CSS stylesheet. XSL is sometimes refered to as a Stylesheet so you might both be right :)

Resources