3 Overeenstemming: Benodigdheden en Aanbevelingen

Inhoud

3.1 Definities

In deze sectie beginnen we met de formele specificatie van CSS2, in de vorm van de specificatie van de relatie tussen auteurs, gebruikers en implementoren.

De sleutel woorden "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in dit document moeten worden geÔnterpreteerd zoals beschreven in RFC 2119 (zie [RFC2119]). Voor de leesbaarheid zullen deze woorden vaak worden gebruikt zonder hoofdletters en meestal in vertaling: "MOET", "MAG NIET", "VERPLICHT", "ZAL", "ZAL NIETT", "ZOU MOETEN", "ZOU NIET MOETEN", "AANBEVOLEN", "KAN", "OPTIONEEL", en enkele andere bewoordingen.

Soms raadt deze specificatie veel oefening aan aan auteurs en de makers van user agents. Deze aanbevelingen zijn niet normatief. Deze aanbevelingen bevatten de uitdrukkingen "Wij raden aan", "Deze specificatie raadt aan", en enkele andere bewoordingen.

Stijlblad
Een uiteenzetting die de presentatie van van een document definieert.

Stijlbladen kunnen drie verschillende origines hebben: auteur, gebruiker, en user agent. De interactie tussen deze bronnen wordt beschreven in de sectie over het watervaleffect en overerving.

Geldige style sheet
De geldigheid van een style sheet is afhankelijk van het level van CSS dat gebruikt is in de stijlblad. Alle geldige CSS1 stijlbladen zijn ook geldige CSS2 stijlbladen. Sommige verschillen met CSS1 veroorzaken echter kliene afwijkingen in de semantiek.

Een geldig CSS2 stijlblad moet geschreven zijn volgens de grammatica van CSS2. Daarnaast mag het alleen zgn. at-regels, namen van eigenschappen en waardes bevatten zoals gedefiniŽerd in deze specificatie. Een ongeldige (illegal) at-regel, naam van een eigenschap of waarde maakt het CSS2 stijlblad ongeldig.

Bron document
Het document waar ťťn of meer stijlbladen naar verwijzen. Dit is geschreven in een taal die het document afbeelt als een stamboom van elementen in een hiŽrarchische structuur. Elk element bestaat uit een naam die het type van het element aangeeft, daarnaast een optioneel aantal attributen en een (eventueel lege) content.
Taal van het document
Hiermee wordt de coderende taal bedoeld van het bron document (bijv.: een HTML of XML applicatie) bedoeld.
Element
(Een SGML term, zie [ISO8879].) De primaire syntactische constructies van het document. De meeste regels in een CSS stijlblad gebruiken de namen van deze elementen (zoals "P", "TABLE", en "OL" voor HTML) om de eigenschappen van het element te specificeren.
Vervangen elementen
Een element waarvan de User Agent alleen de intrinsieke afmetingen kent. In HTML, zijn IMG, INPUT, TEXTAREA, SELECT, en OBJECT voorbeelden van vervangen elementen. Zo wordt bijvoorbeeld de content van het IMG element meestal vervangen door de afbeelding dat door het attribuut "src" wordt benoemd. Er wordt niet gedefinieerd hoe deze intrinsieke afmetingen moeten worden gevonden.
Intrinsieke afmetingen
De hoogte en breedte zoals gedefinieerd door het element zelf, niet beÔnvloed door zijn omgeving. In CSS2 wordt aangenomen dat alle vervangen elementen -en alleen vervangen elementen- intrinsieke afmetingen hebben.
Attribuut
Een waarde horende bij een element en bestaande uit een naam en een bijbehorende waarde.
Content (inhoud)
De content (inhoud) van een element in het bron document; niet alle elementen hebben een inhoud, dan worden ze leeg genoemd. De content van een element kan tekst bevatten en/of een aantal sub-elementen, dan wordt het element de oudervan die sub-elementen genoemd.
Gevormde content
De content van een element nadat deze content dynamisch is gevormd. De gevormde content van verplaatste elementen komt van buiten het bron document. Gevormde content kan ook bestaan uit alternatieve tekst bij een element (zoals de waarde van het HTML-attribuut "alt") en impliciet of expliciet door het stijlblad toegevoegde onderdelen (zoals nummering en opsommingstekens).
HiŽrarchische structuur van een document
Een soortement van stamboom van elementen gecodeerd in het bron document. Elk element in deze stamboom heeft precies ťťn ouder, behalve het allerhoogste element, het root element, welke er geen heeft.
Kind
Een element A wordt een kind van element B als B de ouder van A is
Afstammelingen
Een element A wordt een afstammeling genoemd van element B, als of (1) A een kind is van B, of (2) A is het kind van een element C dat de afstammeling is van B
Voorvader
Een element A wordt een voorouder van een element B genoemd, als B een afstammeling is van A.
Non-terminal
Een non-terminal is een waarde die gedefiniŽerd is in termen van een andere eigenschap
Verwantschap
Een element A wordt een verwant van een element B genoemd als B en A dezelfde voorouder delen. Element A is een voorafgaande verwant van B als A voor B komt in de stamboom. Element B is een navolgende verwant van A als deze na A in de stamboom komt.
Voorafgaand element
Een element A wordt een voorafgaand element aan element B genoemd, als (1) A de voorvader van B is of (2) A een voorafgaande verwant van B is.
Navolgende elementen
Een element A wordt een navolgend element aan B genoemd als B een voorafgaand element is aan A.
Auteur
Een auteur is een persoon die documenten en bijbehorende stijlbladen schrijft. Een authoring tool vormt documenten en bijbehorende stijlbladen.
Gebruiker
Een gebruiker is een persoon die communiceert met een user agent om een document te bekijken, te beluisteren of op een andere wijze te gebruiken. De gebruiker kan een persoonlijk stijlblad verschaffen dat persoonlijke voorkeuren codeert.
User agent (UA)
Een user agent is een programma dat een document, gescreven in een bepaalde taal, interpreteert, bijbehorende stijlbladen toepast en uitvoert via een bepaald medium. Een user agent kan een document weergeven, hardop voorlezen, uitprinten, omzetten naar een ander formaat, enz.

Hier een voorbeeld van een bron document, geschreven in HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>   
  <TITLE>My home page</TITLE>
  <BODY>
    <H1>My home page</H1>
    <P>Welcome to my home page! Let me tell you about my favorite
		composers:
    <UL>
      <LI> Elvis Costello
      <LI> Johannes Brahms
      <LI> Georges Brassens
    </UL>
  </BODY>
</HTML>

Dit resulteert in de volgende hiŽrarchische structuur:

Voorbeeld van een hiŽrarchische structuur.   [B]

Volgens de definitie van HTML, zullen HEAD elementen afgeleid worden tijdens de taalkundige ontleding en worden daarbij deel van de hiŽrarchische structuur van het document, zelfd als de HEAD tags niet voorkomen in het bron document. Net zo als de ontleder weet waar de P- en LI-containers eindigen, zelfs als er geen </P> and </LI> tags in de bron staan.

3.2 Overeenstemming

Deze sectie behandelt alleen de overeenstemming met de CSS2 specificatie. Misschien zal er in de toekomst een ander niveau van CSS komen, waarbij de user agent een andere set van gereedschappeen moet hebben om overeenstemming te verkrijgen. Met overeenstemming wordt bedoeld dat een user agent een document en het bijbehorende stijlblad juist kan uitvoeren naar de gebruiker.

Over het algemeen moeten de volgende punten in acht worden genomen bij de beoordeling van de overeenstemming met deze specificatie van een user agent:

  1. De user agent moet een of meer van de CSS2 media typen ondersteunen.
  2. Voor elk bron document moet de user agent alle bijbehorende stijlbladen verzamelen die bestemd zijn voor het media type dat het ondersteund. Als het niet alle bijbehorend stijlbladen kan verzamelen (bijvoorbeeld door netwerkfouten), moet de user agent het document uitvoeren waarbij het de stijlbladen die het wel kan verzamelen gebruikt.
  3. Het moet de stijlbladen ontleden zoals gezegd in deze specificatie. Met name, at-regels, blokken, declaraties, en selectoren (zie de grammatica van CSS2) moeten herkend worden. Als de user agent een eigenschap tegenkomt dat behoort tot het media type dat het ondersteund , moet het de waarde ontleden en gebruiken volgens de definitie van de eigenschap. Dit betekent dat de user agent alle geldige eigenschappen moet accepteren en alle ongeldige moet negeren. Ook moeten regels die niet bedoeld zijn voor het media types die ondersteund worden.
  4. Voor elk element in de hiŽrarchische structuur van het document, moet de user agent de juiste waardes aan de eigenschappen toekennen volgens de definitie van de eigenschap en de regels van het watervaleffect en overerving.
  5. Als het brond document komt met alternatieve stijlbladen (zoals gedefinieerd met het "alternate" sleutelwoord in HTML 4.0 [HTML40]), moet de user agent de gebruiker de mogelijkheid geven om tussen de verschillende stijlbladen te kiezen en moet het gekozen stijlblad toegepast worden op het document.

Niet iedere user agent hoeft met ieder punt rekening te houden, maar:

The inability of a user agent to implement part of this specification due to the limitations of a particular device (e.g., a user agent cannot render colors on a monochrome monitor or page) does not imply non-conformance.

This specification recommends that a user agent allow the user to specify user style sheets.

3.3 Error conditions

In general, this document does not specify error handling behavior for user agents (e.g., how they behave when they cannot find a resource designated by a URI).

However, user agents must observe the rules for handling parsing errors.

Since user agents may vary in how they handle error conditions, authors and users must not rely on specific error recovery behavior.

3.4 The text/css content type

CSS style sheets that exist in separate files are sent over the Internet as a sequence of bytes accompanied by encoding information (see [HTML40], chapter 5). The structure of the transmission, termed a message entity, is defined by RFC 2045 and RFC 2068 (see [RFC2045] and [RFC2068]). A message entity with a content type of "text/css" represents an independent CSS document. The "text/css" content type has been registered by RFC 2138 ([RFC2318]).