Tuesday 07th of February 2012 04:07:30 AM
Preface
The subject of this book is, as you might have guessed by the cover,
Cascading Style Sheets (CSS). There are two "levels" to
CSS; these are referred to as CSS1 and CSS2. The difference between
the two is that CSS2 is all of CSS1, plus a lot more. This book
attempts to cover all of CSS1, and CSS positioning, which is a part
of CSS2. The rest of CSS2 is excluded because, at the time of this
writing, nobody had implemented most of it. Rather than cover a lot
of theoretical territory, we chose to stick to what was currently
usable.
If you are a web designer or document author interested in
sophisticated page styling, improved accessibility, and saving time
and effort, then this book is for you. All you really need before
starting the book is a decent knowledge of HTML 4.0. The better you
know HTML, of course, the better prepared you'll be. You will
need to know very little else in order to follow this book.
It is important to remember something about web standards and books:
the former are continually evolving, while the latter are frozen in
time (until the next edition comes out, anyway). In the case of HTML
and CSS, there are a great many changes afoot even as these words are
being written. The recent formalization of XHTML 1.0 as a full W3C
Recommendation, for example, is a major milestone in the evolution of
the World Wide Web. There are likely to be even more levels to CSS,
further extending the ability to style documents; major web browsers
are approaching full CSS1 support, and robust CSS2 implementations
can be seen lurking on the horizon. This is an exciting time to be a
designer, and learning CSS now will give you a leg up on the future.
0.1. Typographical Conventions
The following typographical conventions are used in this book:
- Constant width
-
is used to indicate code examples, HTML tags and CSS elements.
- Constant width italic
-
is used for replaceables that appear in text.
- Italic
-
In order to create applications of this category, you might have to define a DTD for your information. Then you have to write classes to import and export information from your XML document(s) (validating using your application's DTD if you have one). You must also write the classes which create the user interface in your application. The user of your application can view and modify information using the GUI (graphical user interface), and they can save (and load) their information to (and from) an XML file (that might use your DTD); in other words, they can save (and load) their information to (and from) an ApplicationML file (where Application is the name of your application). Some examples are AddressBookML, MathML, SVGML, etc.
The classes that import and export information from your ApplicationML file must use the parser and SAX or DOM API in order to import the information. These classes can access this information by using one of the following strategies:
-
Use DOM to directly manipulate the information stored in the document (which DOM turns into a tree of nodes). This document object is created by the DOM XML parser after it reads in the XML document. This option leads to messy and hard-to-understand code. Also, this works better for document-type data rather than just computer generated data (like data structures and objects used in your code).
-
Create your own Java object model that imports information from the XML document by using either SAX or DOM. This kind of object model only uses SAX or DOM to initialize itself with the information contained in the XML document(s). Once the parsing and initialization of your object model is completed, DOM or SAX isn't used anymore. You can use your own object model to accessed or modify your information without using SAX or DOM anymore. So you manipulate your information using your own objects, and rely on the SAX or DOM APIs to import the information from your ApplicationML file into memory (as a bunch of Java objects). You can think of this object model as an in-memory instance of the information that came was "serialized" in your XML document(s). Changes made to this object model are made persistent automatically, you have to deal with persistence issues (ie, write code to save your object model to a persistence layer as XML).
-
Create your own Java object model (adapter) that uses DOM to manipulate the information in your document object tree (that is created by the parser). This is slightly different from the 2nd option, because you are still using the DOM API to manipulate the document information as a tree of nodes, but you are just wrapping an application specific API around the DOM objects, so its easier for you to write the code. So your object model is an adapter on top of DOM (ie, it uses the adapter pattern). This application specific API uses DOM and actually accesses or modifies information by going to the tree of nodes. Changes made to the object model still have to be made persistence (if you want to save any changes). You are in essence creating a thin layer on top of the tree of nodes that the parser creates, where the tree of nodes is accessed or modified eventually depending on what methods you invoke on your object model.
is used to introduce new terms and to indicate URLs, filenames, and
pathnames.
- TIP
indicates a note or tip relating to the nearby text.
- WARNING
indicates a warning.
 |  |  |
| Copyright Page |  | 0.2. Property Conventions |
Copyright © 2002 O'Reilly & Associates. All rights reserved.
<P>regular <SPAN> regular <STRONG> bold <B> bold<STRONG> bold </STRONG></B></STRONG></SPAN>.</P>
Figure 5-15. Visual weight, with descriptors
that is displayed on multiple lines is just the same as a single-lineelement that has been broken into pieces. Consult Figure 8-60 for a more detailed look at this situationcaused by using these styles:SPAN {border: 1px dashed black; padding: 4pt; margin: 8pt;}
Figure 8-60. Inline margins and line-box layout
8.4.3. Managing the Line Height of Inline Elements
In
a fashion very similar to setting the
foreground color, it's possible to declare a color for the
background of an element. For this, you use the property
background-color, which accepts (unsurprisingly)
any valid color.