4. Definitie van Abstracte Modules

Inhoud

Dit deel is normatief.

Een abstracte module is een definitie van een XHTML module waarbij gebruik gemaakt wordt van prosatekst en enkele informele opmaakconventies. Aangezien een dergelijke definitie algemeen niet bruikbaar is in de geautomatiseerde verwerking van document types, is het critisch dat mensen geholpen worden in het begrijpen van hetgene in een module bevat zit. Dit deel definieert de wijze waarop XHTML abstracte modules gedefinieerd worden. Een XHTML-conforme module is niet vereist om een abstracte module definitie te verzorgen. Iedereen die een XHTML module ontwikkelt wordt echter aangeraden om een abstractie (samenvatting) te voorzien om het gebruik van de module te vergemakkelijken.

4.1. Syntactische Conventies

De abstracte modules worden niet gedefinieerd in een formele grammatica. De definities leunen echter aan bij de volgende syntactische conventies. Deze conventies zijn vergelijkbaar met deze van XML DTD's en zouden bekend moeten voorkomen voor XML DTD auteurs. Elk discreet syntactisch element kan gecombineerd worden met anderen om complexere expressies te kunnen vormen die conform zijn aan de algebra die hier gedefinieerd wordt.

elementnaam
Wanneer een element opgenomen wordt in een inhoudsmodel zal de expliciete naam ervan genoteerd worden.
inhoudset (content set)
Sommige modules definiëren lijsten van expliciete elementnamen die inhoudsets genoemd worden. Wanneer een inhoudset opgenomen wordt in een inhoudsmodel zal de naam ervan genoteerd worden.
expr ?
Nul of één geval van zijn toegestaan.
expr +
Eén of meer gevallen van expr zijn vereist.
expr *
Nul of meer gevallen van expr zijn toegestaan.
a , b
Uitdrukking a, gevolgd door uitdrukking b is vereist.
a | b
Ofwel uitdrukking a of uitdrukking b is vereist.
a - b
Uitdrukking a is toegestaan wanneer de elementen van uitdrukking b wegvallen.
haakjes
Wanneer een uitdrukking tussen haakjes staat, neemt de evaluatie van alle subuitdrukkingen binnen de haakjes plaats voor de evaluatie van uitdrukkingen buiten de haakjes (start bij het diepste niveau van nesting).
uitbreiding van voorgedefinieerde elementen
In een aantal gevallen voegt een module attributen toe aan een element. In deze gevallen wordt de elementnaam gevolgd door een ampersand (&).
definitie van vereiste attributen
Wanneer een element de definitie van een attribuut vereist wordt die attribuutnaam gevolgd door een sterretje (asterisk) (*).
definitie van het type van attribuutwaarden
Wanneer een module het type van een attribuutwaarde definieert, wordt dit gedaan door de types op te sommen tussen haakjes achter de attribuutnaam.
definitie van geldige waarden voor attributen
Wanneer een module de geldige waarden voor een attribuut definieert, wordt dit gedaan door de geldige waarden expliciet op te sommen (tussen aanhalingstekens), gescheiden door verticale balken (|), binnen haakjes volgend op de attribuutnaam. Als het attribuut een standaardwaarde heeft, wordt deze waarde gevolgd door een sterretje (asterisk) (*). Als het attribuut een vaste (fixed) waarde heeft, wordt de attribuutnaam gevolgde door een gelijkheidsteken (=) en de vaste (fixed) waarde wordt omsloten door aanhalingstekens.

4.2. Inhoudstypes

Abstracte module definities definiëren minimale, atomische inhoudsmodellen voor elke module. Deze minimale inhoudsmodellen verwijzen naar de elementen in de module zelf. Ze mogen ook verwijzen naar elementen in andere modules waar de abstracte module van af hangt. In veel gevallen vereist het inhoudsmodel dat tekst toegestaan is als inhoud voor één of meer elementen. In deze gevallen is het symbool dat gebruikt wordt voor tekst PCDATA. Deze term, die gedefinieerd wordt in de XML 1.0 Aanbeveling, verwijst naar "processed character data" (verwerkte karakterdata. Een inhoudstype kan ook gedefinieerd worden als EMPTY, hetgeen betekent dat het element geen inhoud heeft in het minimale inhoudsmodel.

4.3. Attribuuttypes

In sommige gevallen is het nodig dat de types of attribuutwaarden of de expliciete set van toegelaten waarden voor attributen gedefinieerd wordt. De volgende attribuuttypes (gedefinieerd in de XML 1.0 Aanbeveling) worden gebruikt in de definities van de abstracte modules:

Attribuuttype Definitie
CDATA Karakterdata (Character data)
ID Een documentunieke identificator
IDREF Een verwijzing naar een documentunieke identificator
IDREFS Een door spaties gescheiden lijst van verwijzingen naar een documentunieke identificatoren
NAME Een naam met dezelfde karakterbeperkingen als ID hierboven
NMTOKEN Een naam samengesteld uit alleen naamtokens zoals deze gedefinieerd worden in XML 1.0 [XML]
NMTOKENS Eén of meer witruimtetekens gescheiden door NMTOKEN waarden
PCDATA Verwerkte karakterdata (Processed character data)

Aanvullend op deze voorgedefinieerde data types definieert XHTML Modularisatie de volgende data types en hun (overeenkomstige) semantieken:

Data type Omschrijving
Character Een enkel karakter uit [ISO10646].
Characterset Een karaktercodering zoals volgens [RFC2045].
Charactersets Een door spaties gescheiden lijst van karaktercoderingen zoals volgens [RFC2045].
Color

De attribuutwaarde van het type "Color" verwijst naar kleurdefinities zoals deze gespecificeerd worden in [SRGB]. Een kleurwaarde kan ofwel een hexadecimaal getal (voorafgegaan door een hekje (hash mark)) ofwel één van de volgende zestien kleurnamen zijn. De kleurnamen zijn hoofdletter-ongevoelig.

Kleurnamen en sRGB waarden
Zwart (Black) = "#000000" Groen (Green) = "#008000"
Zilver (Silver) = "#C0C0C0" Lichtgroen (Lime) = "#00FF00"
Grijs (Gray) = "#808080" Olijf (Olive) = "#808000"
Wit (White) = "#FFFFFF" Geel (Yellow) = "#FFFF00"
Bruin (Maroon) = "#800000" Marineblauw (Navy) = "#000080"
Rood (Red) = "#FF0000" Blauw (Blue) = "#0000FF"
Paars (Purple) = "#800080" Blauwgroen (Teal) = "#008080"
Fuchsia = "#FF00FF" Aqua = "#00FFFF"

De kleurwaarden "#800080" en "Purple" verwijzen beide naar de kleur paars.

ContentType Een mediatype zoals volgens [RFC2045].
ContentTypes Een door komma's gescheiden lijst van mediatypes zoals volgens [RFC2045].
Coords Een door komma's gescheiden lijst van coördinaten die gebruikt worden om gebieden te definiëren.
Datetime Datum- en tijdsinformatie.
FPI Een karakter string die een SGML Formele Publieke Identificator vertegenwoordigd.
FrameTarget Frame naam die gebruikt wordt als doel voor resultaten van bepaalde acties.
LanguageCode Een taalcode zoals volgens [RFC3066].
Length De waarde kan ofwel in pixels ofwel een percentage van de beschikbare horizontale of verticale ruimte zijn. De waarde "50%" betekent dus de helft van de beschikbare ruimte.
LinkTypes

Auteurs kunnen de volgende link types, hier vermeld met hun conventionele interpretaties, gebruiken. Een LinkTypes waarde verwijst naar een door spaties gescheiden lijst van link types. Witruimtetekens zijn niet toegestaan in link types.

Deze link types zijn hoofdletterongevoelig, hetgeen wil zeggen dat "Alternate" hetzelfde betekent als "alternate".

User agents, search engines, enz. kunnen deze link types op verschillende manieren interpreteren. User agents kunnen bijvoorbeeld toegang bieden aan gelinkte documents via een navigatiebalk.

Alternate
Duidt plaatsvervangende versies van het document aan waarin de link voorkomt. Wanneer het samen gebruikt wordt met het hreflang attribuut, duidt het op een vertaalde versie van het document. Wanneer het samen met het media attribuut gebruikt wordt, duidt het op een versie die ontworpen is voor een ander medium (of media).
Stylesheet
Verwijst naar een extern stylesheet. Raadpleeg de Style Module voor details. Dit wordt samen met het link type "Alternate" gebruikt voor door de gebruiker selecteerbare alternatieve stylesheets.
Start
Verwijst naar het eerste document in een collectie van documenten. Dit link type geeft voor search engines aan welk document door de auteur beschouwd wordt als het startpunt van de collectie.
Next
Verwijst naar het volgende document in een lineaire reeks van documenten. User agents kunnen kiezen om het "next" document te pre-loaden om zo de waargenomen laadtijd te reduceren.
Prev
Verwijst naar het vorige document in een geordende reeks van documenten. Sommige user agents ondersteunen ook het synoniem "Previous".
Contents
Verwijst naar een document dat dienst doet als inhoudstabel. Sommige user agents ondersteunen ook het synoniem ToC (van "Table of Contents").
Index
Verwijst naar een document dat een index voorziet voor het huidige document.
Glossary
Verwijst naar een document dat een begrippenlijst voorziet voor begrippen van het huidige document.
Copyright
Verwijst naar een copyright statement voor het huidige document.
Chapter
Verwijst naar een document dat dienst doet als een hoofdstuk in een collectie van documenten.
Section
Verwijst naar een document dat dienst doet als een onderdeel van een collectie van documenten.
Subsection
Verwijst naar een document dat dienst doet als een subdeel van een collectie van documenten.
Appendix
Verwijst naar een document dat dienst doet als een appendix van een collectie van documenten.
Help
Verwijst naar een document dat hulp biedt (meer informatie, links naar andere bronnen van informatie, enz.)
Bookmark
Verwijst naar een bladwijzer (bookmark). Een bladwijzer is een link naar een bepaalde plaats binnen een lang document. Het title attribuut kan bijvoorbeeld gebruikt worden om de bladwijzer te labelen. Merk op dat verschillende bladwijzers gedefinieerd kunnen worden in elk document.
MediaDesc

Het MediaDesc attribuut is een door komma's gescheiden lijst van media omschrijvingen. Hier volgt een lijst van herkende media omschrijvingen:

screen
Bedoeld voor (non-paged) computerschermen.
tty
Bedoeld voor media die een raster gebruiken met een vaste karakterbreedte, zoals teletypes, terminals of draagbare toestellen met beperkte weergavemogelijkheden.
tv
Bedoeld voor televisietoestellen (lage resolutie, kleur, beperkte scrollbaarheid).
projection
Bedoeld voor projectors.
handheld
Bedoeld voor draagbare toestellen (handhelds) (klein scherm, monochrome, gebitmapte figuren, beperkte bandbreedte).
print
Bedoeld voor gepagineerd, opaak materiaal (afdrukken dus) en voor documenten die op het scherm bekeken worden in print preview mode.
braille
Bedoeld voor braille tastfeedback toestellen.
aural
Bedoeld voor spraaksynthesizers.
all
Geschikt voor alle toestellen.

Toekomstige versies van XHTML kunnen nieuwe waarden introduceren en zouden geparameteriseerde waarden kunnen toelaten. Om de introductie van deze uitbreidingen te vergemakkelijken, moeten conforme user agenten in staat zijn om de media attribuutwaarde als volgt te verwerken (parsen):

  1. De waarde is een door komma's gescheiden lijst.
    media="screen, 3d-glasses, print and resolution > 90dpi"
    

    wordt bijvoorbeeld gemapped naar:

    "screen"
    "3d-glasses"
    "print and resolution > 90dpi"
    
  2. Elk deel van de lijst wordt afgekapt vlak voor het eerste karakter dat geen US ASCII letter [a-zA-Z] (ISO 10646 hex 41-5a, 61-7a), digit [0-9] (hex 30-39) of koppelteken (hex 2d) is. In het voorbeeld geeft dit:
    "screen"
    "3d-glasses"
    "print"
    
  3. Vervolgens wordt een hoofdletterongevoelige match gemaakt met de set van media types hierboven gedefinieerd. User agenten mogen de delen die niet overeenkomen negeren. In het voorbeeld houden we screen en print over.

Opmerking. Stylesheets kunnen media-afhankelijke variaties bevatten (zoals de CSS @media construct). In zulke gevallen kan het gepast zijn om "media =all" te gebruiken.

MultiLength De waarde kan een lengte of een relatieve lengte zijn. Een relatieve lengte heeft de vorm "i*", waar "i" een integer is. Wanneer user agenten de plaats verdelen voor de elementen die plaats willen innemen, verdelen ze eerst pixel en percentage lengtes. Daarna wordt de resterende beschikbare ruimte verdeeld onder de relatieve lengtes. Elke relatieve lengte ontvangt een deel van de beschikbare ruimte die proportioneel is aan de integer die voorafgaat aan het "*". De waarde "*" is equivalent aan "1*". Als er dus 60 pixels plaats beschikbaar is nadat een user agent de ruimte ingedeeld heeft in pixel en percentage ruimte en de deelnemende relatieve lengtes zijn 1*, 2* en 3*, zal 1* 10 pixels toegewezen krijgen, zal 2* 20 pixels toegewezen kijgen en zal 3* 30 pixels toegewezen krijgen.
MultiLengths Een door komma's gescheiden lijst van items van het type MultiLength.
Number Eén of meer digits
Pixels De waarde is een integer die het aantal pixels van de canvas aangeeft (scherm, papier). De waarde "50" betekent dus vijftig pixels. Raadpleeg [CSS2] voor normatieve informatie over de definitie van een pixel
Script

Script data kan de inhoud van het "script" element en de waarde van intrinsieke gebeurtenisattributen zijn. User agenten moeten script data niet evalueren als HTML opmaak, maar in de plaats de data doorgeven aan een script engine.

De hoofdlettergevoeligheid van script data hangt af van de scripttaal.

Merk op dat script data die elementinhoud is bepaalde tekens niet mag bevatten terwijl script data die de waarde is van een attribuut dit wel kan.

Shape De vorm van een region.
Text Arbitraire textuele data, waarschijnlijk bedoeld als leesbaar door de mens.
URI Een Uniform Resource Identifier (Uniforme Bron Identificator) zoals volgens [URI].
URIs Een door spaties gescheiden lijst van Uniform Resource Identifiers zoals volgens [URI].

4.4. Een Voorbeeld Abstracte Module Definitie

Dit deel is informatief

Dit deel definieert een voorbeeld abstracte module om aan te geven hoe voordeel gehaald kan worden uit de syntaxregel hierboven gedefinieerd. Aangezien dit voorbeeld tracht alle verschillende syntactische elementen die gedefinieerd zijn te gebruiken, is het behoorlijk complex. Normale module definities zullen veel eenvoudiger zijn dan deze. Merk tot slot op dat deze module referentie de attribuut collectie Common gebruikt. Dit is een collectie die gedefinieerd wordt in de XHTML Modularisatie aanbeveling die alle basisattributen bevat die de meeste elementen nodig hebben.

4.4.1. XHTML Skiing Module

De XHTML Skiing Module definieert opmaak gebruikt wanneer kenmerken van een skihut omschreven worden. De elementen en attributen in deze module zijn:

Elementen Attributen Minimale Inhoudsmodel
vakantieoord Common, href (CDATA) omschrijving, Aspen+
hut Common omschrijving, (Aspen - lift)+
lift Common, href omschrijving?
vakantiehuisje Common, href omschrijving?
kamer Common, href omschrijving?
hal Common, href omschrijving?
open haard Common, href omschrijving?
omschrijving Common PCDATA*

Deze module definieert ook de inhoudset Aspen met het minimale inhoudsmodel hut | lift | vakantiehuisje | kamer | hal | open haard.