webForumDet fria alternativet

XHTML formulärtrubbel

13 svar · 410 visningar · startad av Gjutjärn

GjutjärnMedlem sedan sep. 2002135 inlägg
#1

Jag har validerat min xhtml-kod på http://validator.w3.org men får bara detta meddelande om varenda element: Error: element "br" not allowed here; possible cause is an inline element containing a block-level element
Jag har noga kollat min xhtml-bok (Börja med XHTML), men det har inte gjort saken bättre.
I frontpages validering får man denna varning (förutom alla varningar om / i br och hr mm ;)) "If you make changes to an input element, make sure to do them to the cfinput also" (Vad nu det kan vara eller betyda vet jag ej) Men frontpage varnar inte för att jag satt taggarna fel, vilket den gör hela tiden annars med andra dokument.
Jag blir vansinnig. Jag har minskat formuläret till ett minimum, men det blir inte godkänt.
Jag kan tala om att jag validerat flera andra xhtml-dokument idag (strict) utan problem, så jag kan ju strukturen/tekniken.
Vad har jag missat?
Jag bifogar koden som textdokument.
Formuläret fungerade helt korrekt förresten, när man använde det.
Tacksam... :q

Web-TorMedlem sedan nov. 200013 890 inlägg
#2

Du kan lösa det genom att lägga taggarna som validatorn klagar på, inom en <div>-tagg.

Se bifogad fil. :)

GjutjärnMedlem sedan sep. 2002135 inlägg
#3

OK

Tack så mycket. :)
Jag ska testa det, men jag tycker att det verkar konstigt att det inte fungerar som jag gjort.
De skriver precis som jag, i boken "Börja med XHTML".
Om någon mer har förslag, så tages de tacksamt emot.
Ska man verkligen behöva lägga allt mellan <form> och </form> i ett div-element?

Web-TorMedlem sedan nov. 200013 890 inlägg
#4

Det behöver inte vara just en <div>-tagg men du måste lägga ALLA dina inline-taggar i ett block-element.

Testa den här koden:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>formular</title>
</head>

<body>

	<i>Kursiv text</i>

	<p><i>Kursiv text i ett block-element</i></p>

</body>
</html>

Den första texten kommer inte att klara sig igenom validator eftersom den inte ligger i ett block-element. :)

GjutjärnMedlem sedan sep. 2002135 inlägg
#5

Ok igen

Tack så mycket.
Jag ska kolla lite mer då, och testa det du skrivit.
Konstigt om deinte behövt det i bokexemplen bara.
Är formatelement (logiska o fysiska) och inline-element detsamma? (Jag antar det eftersom det handla om just de elementen som <b> och <i> m.fl.).
I xhtml-bokens exempel har de lösa <span>-element inom <form>-elementen. Jag har inte hunnit testa om det fungerar som du skrev, men ska göra det senare.
Nu ta hand om bebis en stund.
Hej tills vidare. Och tack för din hjälp.
Det är förresten bara problem med formuläret, de övriga sidorna klarade validering utan problem (det kanske jag skrev?).

GjutjärnMedlem sedan sep. 2002135 inlägg
#6

Förresten

Är <form> inte ett blockelement?
Finns det någonstans där alla element är listade efter block och inline? I min bok finns ej alla element listade, utan de vanligaste. Sedan när de beskriver nya element, så talar de inte alltid om ifall de är block eller inline.

GjutjärnMedlem sedan sep. 2002135 inlägg
#7

Tor om samma + en annan fråga

Tackar för tipset!
Det funkade!
Förut var alla element otillåtna, men nu passerade det valideringen utan minsta anmärkning!
(Fast jag retar mig fortfarande på att de inte alls gjort så i boken, utan som jag hade gjort innan, med lösa <span> och inget blockelement som omger allt i <form>!)
Jag ska skriva av deras exempel exakt, och validera det. Går inte det igenom, så får jag maila och "skälla" på dem.

En annan fråga... är det bättre att skriva <br /><br /> än ett enkelt <p />? Jag tycker att det borde vara bättre med dubbla radbrytningar, eftersom <p /> säger att det är ett stycke där, fast det inget finns. Men det är ju enklare med <p /> förstås.

Tack för all din hjälp!
//Emma CC - http://home.swipnet.se/emma_c-c (det är ej min nya xhtml-sida, utan min gamla, i halvkass xhtml - transitional)

Web-TorMedlem sedan nov. 200013 890 inlägg
#8

Jag ska skriva av deras exempel exakt, och validera det. Går inte det igenom, så får jag maila och "skälla" på dem.

Det tycker jag. :)

är det bättre att skriva <br /><br /> än ett enkelt <p />?

Det finns inget svar som är "rätt".
Är det ett nytt stycke så ska du använda <p>.
Är det samma styck ska du använda <br />.

jarvkloMedlem sedan juli 20013 378 inlägg
#9

är det bättre att skriva <br /><br /> än ett enkelt <p />?

Japp - Det rekommenderas t.o.m. i specen att man inte använder kortformen <p/> när man skriver "HTML-kompatibel" xhtml (vilket de flesta av oss fortfarande gör utan att tänka speciellt på att vi gör det ;) )
Källa: http://www.w3.org/TR/xhtml1/#C_3

(Sorry Tor! - nu var jag där igen ;) :birp )

Web-TorMedlem sedan nov. 200013 890 inlägg
#10

Aha! Jag såg inte ens att det stod '<p />'

Jag trodde du menade vilket som vara bäst generellt sett - två <br /> eller ett <p>. ;)

Sorry Tor! - nu var jag där igen

Jag uppskattar att du är här och påpekar när jag har fel. :)
Hur ska man annars lära sig nåt?

jarvkloMedlem sedan juli 20013 378 inlägg
#11

När jag nu ändå är i farten ;)

Gjutjärn skrev:

Är <form> inte ett blockelement?

Jodå - det är det. Dvs man kan ha en <form>...</form> överallt där man kan ha ett "Block".
Men innehållet i form är en annan historia....
Det skiljer sig nämligen rejält mellan de olika dokumenttyperna...

I xhtml 1.0 Transitional, kan du ha i princip vadsomhelst utom en annan form mellan <form> och </form>...
Ur DTD:n

<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->

och

<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">

Källa: klicka dig vidare från http://www.w3.org/TR/xhtml1/dtds.html#dtdentry_xhtml1-transitional.dtd_form

Men!
I xhtml 1..0 Strict, får du bara ha Block-taggar (undantaget <form> förståss) mellan <form> och </form> !!!

<!ENTITY % form.content "(%block; | %misc;)*">

vilket begränsar friheten rejält....
Källa: http://www.w3.org/TR/xhtml1/dtds.html#dtdentry_xhtml1-strict.dtd_form.content

Man kan alltså inte ens ha en <input /> direkt i formuläret (input är en inline-tagg !!!) i xhtml 1.0 Strict... Man måste lägga dem inom blocktaggar som accepterar Inline-innehåll...

jarvkloMedlem sedan juli 20013 378 inlägg
#12

... Äsch - tryckte på fel knapp --- Ursäkta denna dublett :r

GjutjärnMedlem sedan sep. 2002135 inlägg
#13

AHA!

Det förklarar ju allt.
I boken som jag kollar i när jag undrar ngt, används ofta Transitional, men jag tycker att de kunde förklarat det här med Strict bättre (mycket bättre).
Tack för det svaret, jag har grubblat en hel del på det här. Nu kan jag sova igen ;) .
Tyvärr kan jag nog inte använda din länk, eftersom min engelska sviktar för mycket (ordförrådet...). Jag har försökt läsa där, men fattar inte så mycket.
Jag får hålla mig till min bok, och fråga andra om jag fastnar (vilket jag ju inte gjort med mer än just det här).

Tack i alla fall för ditt svar!

jarvkloMedlem sedan juli 20013 378 inlägg
#14

Kul att kunna hjälpa till ;)

OT:

Den här osäkerheten om vad som egentligen skiljer mellan "Strict" och "Transitional" är tyvärr något man får leva med - och den har sitt ursprung i HTML4 (dvs problematiken har funnits i HTML ända sedan december 1997! - även om de flesta missar problemet genom att köra Transitional eller skippa DOCTYPE helt ;) ).

Skriv om ditt ursprungsformulär i HTML4 Strict med DOCTYPE:n

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

och validera så får du se ;)

Orsak:
xhtml 1.0 Transitional motsvarar i princip rakt av HTML4 Transitional...
xhtml 1.0 Strict motsvarar i princip rakt av HTML4 Strict...

Just följderna av det sambandet (och skillnaderna) är det *väldigt* få bok- och webbartikelförfattare som påpekar speciellt ofta ;)

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)