Referensbok

SGML © Eva von Pepel

* Referensböcker | SGML-intro | DTD | HTML 3.2-träd

SGML-DTD

Inledning

Att lära sig läsa DTD är ett måste för alla som vill kunna språket utantill. Detta dokument innehåller allt nödvändig information om en specifik dokumenttyp. När du har lärt dig läsa den kan DTD:n vara den enda informationskällan för att kunna syntaxfelfritt strukturera SGML-dokument.

En DTD består av olika deklarationer. Även "vanligt" text, t ex information till läsaren, skrivs i form av deklarationer - i det här fallet kommentarer.

Med undantag för just kommentarer är alla deklarationer strukturerade på samma sätt.

<!NYCKELORD (objekt som deklareras) (regler för detta objekt)>

<! Öppnar en markeringsdeklaration Markup Declaration Open (MDO), dessa två tecken betraktas som ett och får inte innehålla några mellanslag som direkt (utan mellanslag) följs av ett
NYCKELORD Som talar om vilken typ av deklaration det handlar om, t ex dokumenttyp, element eller attribut Vidare identifieras den typ av
objekt Generic Identifier som namnges och ska deklareras, t ex dokument av typ HTML eller element av typ stycke Sedan följer
regler (eller parametrar) som gäller för det identifierade objektet, t ex version av deklarerade dokumenttyp inklusive hänvisning till dess regler (DTD) eller elementets markeringsregler och förekomst Deklarationen avslutas med
> Stänger markeringsdeklarationen Markup Declaration Close (MDC)

Låt oss titta närmare på DTD för HTML 4.0 (http://www.w3.org./TR/REC-html40/sgml/dtd.html)

Dokumenttyp Definitionen börjar med en kort information om språkets version samt dess författare. Då ingen "lös text" får förekomma i DTD:n skrivs denna som en kommentar.

Kommentarer

<!ELEMENT BR -- O EMPTY forced line break -->

foreced line break är en kommentar inuti Element-deklarationen


<!-- här kan du skriva vad du vill förutom fler än ett bindestreck -->

exempel på Kommentar-deklaration

I SGML allt som skrivs mellan två par bindestreck betraktas som en kommentar och ignoreras av en analysator (parser), dvs dess innehåll inte avläses. Det första bindestreck-paret kallas Comment Declaration Open (CDO) och det andra Comment Declaration Close (CDC). Det tillåter inskrift av kommentarer i själva deklarationer och är orsaken till att dess konstruktion skiljer sig från andra deklartioner.

Kommentarer, noteringar och allt annat som inte ska skrivas in själva deklarationerna omges med <! (MDO) och > (MDC)

<!-- Detta är en kommentar-deklaration -->

Du får inte ha några mellanslag mellan tecknen som öppnar deklarationen (MDO), dvs <! och de två bindestreck som öppnar kommentaren (CDO) utan skriva allt i en enda följd: <!--. Mellanslag är tillåtna mellan bindestreck som stänger kommentaren -- (CDC) och tecknet som stänger deklarationen (MDC) >.

Dokumenttyp-deklaration

Denna deklaration skrivs i början av DTD:n och innehåller information om dokumenttypen, dess version och DTD:n i vilken regler för just denna dokumenttyp beskrivs så att dokumentet kan valideras enligt de reglerna. Om du strukturerar dina dokument enligt HTML 4.0 ska du börja varje dokument med:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

eller

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

<! MDO som öppnar deklarationen och följs direkt, utan mellanslag av
DOCTYPE Nyckelordet som identifierar deklarationstyp, i detta fall DOCTYPE, dvs en Dokumenttyp-deklartion
HTML Objektet som ska deklareras, i detta fall typ av dokument, dvs den här Dokumenttyp-deklarationen identifierar dokument av typ HTML
PUBLIC Talar om att det som följer är Formal Public Identifier (FPI), dvs i formell publik domän. Den kan även identifieras som SYSTEM (System Identifier) med då skulle hänvisningan vara till det system som stödjer den, tex <!DOCTYPE HTML SYSTEM "http://www.w3.org/pub/WWW/MarkUp/ Cougar/Cougar.dtd">
- Ett minus tecken (kan även vara plus). Minus står för oregistrerad organisation (W3C i detta fall) medan plus for registrerad
// Dessa två tecken är fältavgränsare
W3C Identifierar ägaren, dvs W3Konsortiet
DTD Public Text Class - typ av objekt som identifieras, i detta falla DTD:n
HTML 4.0 Public Text Description namn på objektet och version
EN Public Text Language språk på vilket den allmänna texten skrevs, dvs engelska
http://www.w3.org/TR/REC-html40/strict.dtd Hänvisar till den adress där www-klienten kan ladda DTD:n och andra dokument ifall de skulle visa sig nödvändiga för en korrekt avläsning.
> MDC

Entity-deklarationer

Entity deklarationer kommer alltid först i en DTD.

SGML tillåter dig att namnge arbitära delar av dokumentets innehåll och omvandla dem till koder med hjälp av s.k. entities (enheter). Dessa kan jämföras med fiktionella element.

En entity är en namngiven del av ett dokument som inte tar anseende till själva struktureringen. Det kan vara några få tecken eller en hel fil som kan inkluderas i ett dokument. Mao en entity är ett valfritt antal tecken till vilka man kan referera som till en enhet. För att inkludera dessa delar skapas först en Entity- deklaration som dels namnger en arbitär del dels deklarerar regler beträffande denna del, eller som det heter tilldela ett värde till detta namn. Namnet, s.k. entity referens, inkluderas senare i andra deklarationer.

Det finns två typer av entities: parametrar (attribut) som inkluderas i deklarationer och generella som kan inkluderas i dokument .

Parameter enheter

Parameter enheter är en del av DTD:n och skrivs som deklarationer vilka senare kan inkluderas i andra deklarationer. På sätt och viss gör man ett element av olika enheter. De kan även jämföras med ett makro till vilket deklarationerna kan referera och expandera det till en sträng någon annanstans i DTD:n.

Till exempel: elementen i HTML delas i två huvudgrupper. Beroende på deras förekomst klassas de i blockelement och inlineelement. Blockelementen, t ex elementet P, kan innehålla inlineelementen där bl.a. alla logiska fraser, te x STRONG, EM.

När man deklarerar elementet P och dess content model, dvs vilka element får P innehålla ska alla inlineelement listas inklusive de logiska fraserna. Då det finns några dussin inlineelement skulle en sådan deklaration vara mycket lång. Därför "grupperar" man alla logiska fraser i en entity. Denna entity namnges på ett valfritt sätt och deklareras vilka element den innehåller, dvs till vilken sträng ska den expanderas. En entity kan innehålla andra entities.

Då det finns ett antal olika typer av inlineelement, t ex logiska fraser, fysiska fontstilar deklarerar man var och en av dessa som egen entity och senare "grupperar" dem i en enda entity som beskriver alla inlineelement.

Det är inte bara element som kan grupperas på detta sätt utan även attribut och värden.

Namn på en parameter entity måste alltid börjas med % som följs av entity (valfritt) namn och kan avslutas med ett semikolon.

<!ENTITY %inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

<!ENTITY Entity-deklaration öppnas
%inline Som namnger och definierar objektet %inline
" ..... " Denna entity expanderar till strängen mellan citattecken
#PCDATA Parsed character data - text och speciella kodningar (som även de kallas entities), t ex & eller ö istället för ö
%fontstyle; Entity %inline innehåller en annan parameter entity - %fontstyle;. Om vi tittar på dess deklaration: <!ENTITY %fontstyle "TT | I | B | BIG | SMALL"> ser vi att den expanderar till strängen som innehåller elementen TT, I, B, BIG, SMALL
| kallas för pipe och betyder eller
%phrase; Entity %inline kan även innehålla parameter entity %phrase: <!ENTITY %phrase "EM | STRONG | DFN | CODE | SAMP | KDB | VAR | CITE | ABBR | ACRONYM ">
%special; och <!ENTITY %special "A | IMG | OBJECT | BR | SCRIPT | MAP | Q| SUB | SUP | SPAN | BDO ">
%formctrl; samt <!ENTITY %formctrl; "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">
> Entity-deklaration stängs (MDC)

En entity med namn %inline innehåller alltså elementen: TT | I | B | BIG | SMALL | EM | STRONG | DFN | CODE | SAMP | KDB | VAR | CITE | ABBR | ACRONYM | A | IMG | OBJECT | BR | SCRIPT | MAP | Q| SUB | SUP | SPAN | BDO | INPUT | SELECT | TEXTAREA | LABEL | BUTTON

När en parser påträffar entity %inline expanderas denna till den strängen.

Det är inte bara element som kan "grupperas" som en entity. Samma gäller attribut och värden. I HTML 4.0 kan de flesta element tilldelas 16 "grund"-attribut. Istället för att deklarera alla i samband med deklareringen av varje enskilt element skapade man en entity under namnet %attrs;

Generella enheter

Generella enheter (general entities) är delen av själva dokumentet och skrivs in i dokumentet. Till exempel om ett visst uttryck förekommer ofta i dokumentet istället för att skriva det gång efter gång kan uttrycket skrivas in i en separat fil och refereras inifrån dokumentet med hjälp av ett referensord. När en SGML processor stöter sedan på detta ord byter den ut ordet mot filens innehåll. Tyvärr väldigt få www-klienter utnyttjar denna möjlighet.

<!ENTITY evp "Eva von Pepel">

evp är entity namn. När entity referens &evp; påträffas i instansen av ett dokument kommer den att ersättas med texten Eva von Pepel. Den text eller filens man som ska ersätta en entity referens måste alltid citeras. Det första citatteckent som börjar strängen kallas för Literal Start Delimiter och det som stänger den för Literal Close Delimiter.

Generella enheter också används för att byta ut visa tecken som används i t ex dokument markeringen och omvandla dem till en del av innehållet. Sådana tecken är t ex < och > samt andra tecken till vilka finns ingen tillgång.

Element-deklarationer

Element deklarationer innehåller information om de olika objekten som ett dokument av den tidigare specificerade typen kan innehålla. Deklarationerna dels namnger varje objekt (elementtyp) t ex TABLE dels innehåller information om vilka regler som gäller just för denna typ av element. Det namn som en elementtyp ges återkommer senare i markeringstaggen.

<!NYCKELORD (objekt som deklareras) (regler för detta objekt)>

"Regler för detta objekt" består av två delar: markeringsregler och och förekomst regler (elementets innehåll - content model). Element deklarationer består av tre delar: elementtyp som namnges och ska deklareras (public identifier), t ex P (stycke), markeringsregler och förekomst regler.

<!ELEMENT (elementtyp) (markeringsregler) (elementetypens innehåll)>

t ex:

<!ELEMENT P - O (%inline;)* -- paragraph -->

<!ELEMENT Element-deklaration börjar
P Elementtyp som namnges och deklareras, i detta fall P - stycke
- O Markeringsregler, dvs hur element av denna typ ska markeras (taggas)
(%inline;)* Elementtypens innehåll - element ev typ P kan innehålla entity %inline, som expanderar till en mäng olika elementtyper (se Entity-deklaration)
-- paragraph -- En SGML-kommentar (paragraph - stycke)
> Element-deklaration slutar

Elementtyp

Elementtyp talar om vilken typ av element som deklareras, t ex P eller en grupp av element, t ex både TH och TD, <!ELEMENT (TH|TD) - O (%flow;)*>. Om två eller fler elementtyper grupperas betyder detta att samma regler gäller för de båda. Varje elementtyp, enskild eller i en grupp, har en egen Element deklaration. Elementtypen deklareras genom att identifiera dem (namnge dem, som för det mesta är deras engelska namn eller förkortning), t ex P eller BOK och en grupp identifieras genom att lista varje medlem. Medlemmar åtskiljs med tecknet | som betyder eller, t ex TH|TD.

Varje elementtyp har sitt eget namn. I den fiktiva dokumenttypen BOK kallade vi styckena för STYCKE. I dokument av typ HTML kallas styckena för P som är förkortning av paragraph. Namn är valfria men bör inte överstiga 8 tecken, kan skrivas med både stora och små bokstäver och kan innehålla tecken a-z, A-Z, siffror 0-9, punkter och bindestreck.

Element-deklaration för elementtyp BOK

<!ELEMENT bok (markeringsregler) (innehåll)>

Element-deklaration för elementtyper (grupp) STYCKE och RAD

<!ELEMENT (stycke|rad) (markeringsregler) (innehåll)>

Element-deklaration för elementtyp P (stycke)

<!ELEMENT P - O (%inline;)*>

Markeringregler

Varje element av samma typ markeras på samma sätt. Elementets början markeras med en s.k. starttag som består av tre delar: avgränsare som öppnar taggen (Open Delimiter) <, namn på elementtyp (Generic Identifier) t ex STYCKE eller P och avgränsare som stänger taggen >. Starttagen för element av typ STYCKE är alltså <STYCKE>. Elementens slut markeras med en sluttag som åtskiljs från starttaggen med ett snedstreck som markerar slut. Sluttaggen för element av typ STYCKE är allstå </STYCKE>. (Dessa regler är specificerade i SGML-deklarationen).

<STYCKE>ett stycke</STYCKE>

Elementtyper kan markeras på fyra olika sätt, beroende om taggarna är obligatoriska eller valfria. Tomma element, dvs element utan något innehåll som t ex BR saknar sluttaggen helt och hållet.

Markeringsreglerna specificeras genom två tecken, bindestreck "-" som betyder att markeringen är obligatorisk och bokstav O, (som står för Omissible eller Optional) och betyder att markeringen är valfri. Det kallas för minimazation. Första tecknet representerar starttaggen och andra sluttaggen. Det finns fyra markeringsregler:

- -

Både starttagg och sluttagg är obligatorisk
<!ELEMENT CAPTION - - (%inline;)* -- table caption -->

- O

Starttagg är obligatorisk, sluttagg är valfri.
<!ELEMENT TR - O (TH|TD)+ -- table row -->

O O

Både startagg och sluttagg är valfri
<!ELEMENT TBODY O O (TR) -- table body -->

O EMPTY

Starttagg är obligatorisk, sluttagg är förbjuden - saknas. På så sätt markeras alla tomma element som saknar innehåll.
<!ELEMENT COL O EMPTY -- table column -->

Typ av innehåll

De flesta element kan eller i vissa fall måste ha något innehåll samt som de själva kan eller inte kan vara innehåll i andra element. Om vi bestämmer att i dokument av typ BOK måste elementet BOK innehålla elementet KAPITEL som i sin tur måste innehålla antingen elementet AVSNITT eller elementet/elementen STYCKE och att ett STYCKE får inte innehålla ett KAPITEL då ett dokument som markeras: <BOK>
<KAPITEL>
<STYCKE>första stycke</STYCKE>
<STYCKE>andra stycke</STYCKE>
</KAPITEL>
</BOK>

följer dessa regler och är därför av typ BOK. Men ett dokument som markeras:

<BOK>
<KAPITEL>
<STYCKE>andra stycke</STYCKE>
</KAPITEL>
<STYCKE>första stycke</STYCKE>
<KAPITEL>
<STYCKE>andra stycke</STYCKE>
</KAPITEL>
</BOK>
följer inte dessa regler (ett stycke får ju inte innehålla ett kapitel) därför är dokumentet ogiltigt. Ogiltiga dokument är dokument som inte följer regler specificerade i DTD.
Ogiltiga dokument är dokument vars instans inte valideras mot den i Dokumenttyp-deklarationen uppgiven DTD.

Innehållstyp beskriver tillåten förekomst av andra elementtyper i det deklarerade elementet. Dessa elementtyper kan i sin tur innehålla andra elementtyper som följer huvudelementet, s.k. flödet (flow).

Till exempel elementet UL måste innehålla elementet LI. Dessutom är LI det enda elementet som UL kan innehålla. LI däremot kan innehålla en mängd olika element. Det är just dessa element som kallas för flödet - genom LI följer de UL.

Innehållsmönster content model kan innehålla en eller fler innehållsgrupper.

<!ELEMENT bok - - (kapitel)+>
elementen av typ BOK måste innehålla minst ett eller fler kapitel

likaså elementtypen som identifieras som UL (unordered list) - postlista
<!ELEMENT UL - O (LI)+>
som måste innehålla minst ett element LI (list item) - post i listan

Det deklarerade elementets innehåll kan vara ett eller fler element, elementgrupper eller bara #PCDATA. Några är obligatoriska andra valfria. Några måste följa en speciell ordning andra behöver inte det. Exakt hur elementen får förekomma specificeras genom olika tecken, s.k. kopplingar (connectors). Varje tecken har sitt eget betydelse:

+

Måste förekomma minst en gång - kan repeteras

<!ELEMENT THEAD - O (TR)+ -- table header -->

THEAD måste innehålla en eller fler tabellrader TR

*

Kan uteslutas men om förekommer kan repeteras

<!ELEMENT COLGROUP - - (col)* -- table column group -->

COLGROUP kan innehålla noll eller fler COL

?

Valfri, men om förekommer - kan förekomma bara en gång.

<!ELEMENT TABLE - - (CAPTION?, (COL*| COLGROUP*), THEAD? TFOOT?, TBODY+)>

TABLE kan innehålla CAPTION, THEAD och TFOOT. Alla är dock valfria. Men om de förekommer kan det ske bara en gång.

,

Alla förekommer men i den ordning som specificeras i innehållsmönstret. Anger en sekvens, elementen följer varandra i den specificerade ordningen; t ex i 1,2,3 måste 2:an följa 1:an och 3:an måste följa 2:an. Om ett element i sekvensen visas men ett frågetecken (?) kan detta element följa men det är inget krav

<!ELEMENT TABLE - - (CAPTION?, (COL*| COLGROUP*), THEAD? TFOOT?, TBODY+)>

Denna ordning måste följas

  1. TABLE
  2. CAPTION
  3. COL eller COLGROUP
  4. THEAD
  5. TFOOT
  6. TBODY
|

Båda kan förekomma men ej samtidigt

<ELEMENT TR - O (TH|TD)+ -- table row -->

Elementet TR måste följas av antingen TH eller TD

&

Alla förekommer. Elementen både på höger och vänster sida av tecknet måste vara med men följden är valfri

<!ELEMENT HEAD O O (TITLE & ISINDEX? & BASE?) +(%head.misc)>

TITLE och ISINDEX och BASE måste följa HEAD men det kan ske i valfri ordning. Då både ISINDEX och BASE är valfria (frågetecken vid båda) är det bara TITEL som måste finnas i elementet HEAD

( . . . )

Markerar gruppering av något slag

Om vi bestämde att elementen av typ BOK kan innehålla antingen minst ett KAPITEL eller minst ett STYCKE dvs samma regler skulle gälla åt de båda två kan vi gruppera de två och tilldela dem samma förekomst regeln:

<!ELEMENT bok - - (kapitel|stycke)+>

Elementen av typ BOK måste innehålla minst ett kapitel ELLER minst ett stycke Grupperingar skrivs på samma sätt som matematiska grupperingar. 2x(3+4) betyder att både tre och fyra ska multipliceras med två. (kapitel|stycke)+ betyder att samma regler gäller åt både kapitel såsom stycken dvs kan repeteras.

Inkludering till innehållet

I varje dokumenttyp finns det något element som kan förekomma var som helst i strukturen. Till exempel i en bok kan en fotnot vara ett sådant element. För att kunna inkludera den var som helst i boken måste först en deklaration som beskriver vilka regler gäller för en fotnot skapas:

<!ELEMENT fotnot (markeringsregler) (innehåll)>

och sedan inkluderas i Element-deklarationen - BOK

<!ELEMENT bok - - ((kapitel|stycke)+) +(fotnot)>

Det betyder att en fotnot kan inkluderas i varje element som förekommer i elementet BOK. Plustecknet innan en elementtyp betyder en inkludering.

<!ELEMENT BODY OO (%block;|SCRIPT)+ +(INS|DEL) -- document body -->

Elementet BODY kan innehålla elementen som specificeras i entity %block; eller SCRIPT men även elementen INS eller DEL kan inkluderas

Exkludering från innehållet

På samma sät kan elementen exkluderas från innehållet. Exkludering sker via ett minus tecken, t ex:

<!ELEMENT A - - (%inline;)* -(A)>

Elementet A kan innehålla elementen specificerade i entity %inline; exklusive elementet A. (Entity %inline; innehåller elementet A). Mao elementet A kan inte innehålla ett annat element A.

Exempel

<!ELEMENT DIV - - (%flow;)*>

Elementet DIV har start- och sluttagg, båda är obligatoriska. Det kan innehålla elementen specificerade i entity %flow; som kan förekomma noll eller fler gånger

<!ELEMENT FORM - -
(%block;|SCRIPT)+ -(FORM)>

Elementet FORM har start- och sluttagg, båda är obligatoriska. Det kan innehålla elementen specificerade i entity %block; eller SCRIPT. Ett av dessa måste förekomma minst en gång. Det kan inte innehålla elementet FORM. Mao elementet FORM kan inte innehålla ett annat element FORM.

<!ELEMENT AREA - O EMPTY -->

Elementet AREA har en starttag som är obligatorisk. Sluttagg är förbjuden. Elementet är tomt och kan inte innehålla något.

<!ELEMENT DL - - (DT|DD)+ > Elementet DL har start- och sluttagg, båda är obligatoriska. Det kan innehålla DT och DD. Ett av dessa måste förekomma minst en gång i DL.
<!ELEMENT HTML O O (%html.content;)*>

Elementet HTML har start- och sluttagg, båda är valfria. Det kan innehålla elementen specificerade i entity %html.content; som enligt sin egen deklaration:

<!ENTITY % html.content "HEAD, BODY">

expanderar till elementen HEAD och BODY som måste förekomma i den uppgivna ordningen. Först HEAD, som direkt efterföljs av BODY

Attribut-deklarationer

Olika egenskap kan tilldelas elementen, t ex placering (ALIGN) eller bredd (WIDTH). Dessa egenskaper kallas för attribut. Attributen kan ta olika värden, t ex RIGHT eller 100%. Alla attribut med tillhörande värden listas i en Attribut-deklaration som direkt följer varje enskild Element-deklaration.

<!ELEMENT PARAM - O EMPTY>
<!ATTLIST PARAM
          id	     ID	              #IMPLIED
          name	     CDATA            #REQUIRED
          value      CDATA	      #IMPLIED
          valuetype  (DATA|REF|OBJECT) DATA
          type	     %ContentType     #IMPLIED
           -- 1        	2	        3 --
>

OBS! -- 1 2 3 -- är mina egna kommentarer som inte finns i deklarationen

<!ATTLIST Attribut-deklaration öppen.
PARAM

Det identifierade objektet är PARAM - samma namn som i Element-deklarationen.

Vidare kommer en lista med attributdefinitioner bestående av tre delar: 1. attributets namn, 2. tillåtna värden det specifika attributet kan ta och 3. gällande villkor för standardvärde.

id Attributets namn.
ID Attributets "id" värde. Vad "ID" står för beskrivs på en annan plats.
#IMPLIED Det finns inga gällande villkor för standardvärdet utan tillhandahålls av www-klienter. Attributet är valfritt.
name Nästa attributets namn.
CDATA attributets "name" värde. Vad "CDATA" står för beskrivs på en annan plats.
#REQUIRED Detta värde och därmed attribut är obligatoriskt. Elementet PARAM måste innehålla attributet "name".
valuetype Tredje tillåtet attribut
(DATA|REF|OBJECT) Värden attributet "valuetype" kan ta. Det är DATA eller REF eller OBJECT, t ex:

<PARAM VALUETYPE=OBJECT>

DATA Standardvärdet är "DATA". <PARAM VALUETYPE=DATA>. Det betyder att värdet och därmed själva attributet behöver man inte uppge.
type Nästa attribut.
%ContentType Och dess värde specificerade i form av entity %ContentType
#IMPLIED Som är valfritt
> Slut på deklarationen

Utöver #IMPLIED och #REQUIRED kan standardvärdet specificeras som #FIXED och betyder att något speciellt standardvärde har redan tilldelats attributet i frågan.

De flesta element kan ta fler än ett attribut. Alla attribut skrivs i starttaggen och åtskiljs med ett mellanslag.

<ELEMENT ATTRIBUT1=värde ATTRIBUT2=värde ATTRIBUT3=värde>

Boolean attribut

Några attribut kan ta värden i form av boolean variabler. Om sådana attribut förekommer i starttagen tolkas deras värde som "sann", om de uteblir tolkas värdet som "falsk". Till exempel:

<!ATLIST OPTION selected (selected) #IMPLIED >

Namn på attributet är "selected" och likaså värdet då boolean attribut kan ta ett singel värde - sig själv. Det kan skrivas i HTML:

<OPTION SELECTED=SELECTED>

Då närvaro av själva attributet antyder att värdet är "sann" kan värdet uteslutas, dvs minimeras (minimazation):

<OPTION SELECTED>

Mer info finns på: SGML

Upp | Referensböcker

Valid HTML 4.0 dok. http://vonpepel.com/ref/ - Senaste uppdatering 7 maj 1998