webForumDet fria alternativet
Logga in / Bli medlem

xhtml  

HTML & CSS

10 svar · 879 visningar · startad av jake

Medlem sedan sep. 2001649 inlägg
Frågan#1

hur gör man ett extra mellanrum "space" i xhtml då   ej verkar finnas med i definitionen...

/J

Medlem sedan mars 20007 896 inlägg
#2

Hm, felläsning från min sida. :)

Funkar inte bara  ?

Medlem sedan sep. 2001649 inlägg
#3

jo det funkar säkert (nu iaf) men verkar inte som den är med i w3c definitionen...

Medlem sedan juli 20013 378 inlägg
#4

Jodå, det är med - men man måste kunna lite XML-trix för att hitta dem...

I DTD:n (DokumentTypDefinitionen) för t.ex. xhtml1.0 Strict. (finns på http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ) definieras alldeles i början några externa entiteter (vilket ungefär motsvarar include-filer).
Dessa anropas också samband med definitionerna:

<!--================ Character mnemonic entities =========================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
   "xhtml-lat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols for XHTML//EN"
   "xhtml-symbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special for XHTML//EN"
   "xhtml-special.ent">
%HTMLspecial;

Den externa entiteten (alltså ungefär "include-filen") "xhtml-lat1.ent" (alltså i praktiken http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent ) innehåller definitioner av ett gäng specialtecken, däribland

<!ENTITY nbsp   "&amp;#160;"> <!-- no-break space = non-breaking space,
                                  U+00A0 ISOnum -->

Motsvarande finns i övriga xhtml-DTD:er också.

Verkar det knöligt kan jag trösta er med att XML i alla är fall mycket lättare att förstå sig på än SGML (som "icke-x"HTML är byggt på) :e

Medlem sedan sep. 2001649 inlägg
#5

hm... betyder det att man ska skriva "&#160;" i koden för att infoga ett nbsp ?

Kan man på något sätt lägga det i css om man har en liknande struktur på flera ställen i dokumentet.
(i detta fallet ett tecken som ska komma på samma rad som föregående ord med ett space emellan...

hmm dum fråga kanske...

tack iaf järvklo för det omfattande svaret...

Medlem sedan juli 20013 378 inlägg
#6

hm... betyder det att man ska skriva "&#160;" i koden för att infoga ett nbsp ?

Njae- Det betyder att det är tillåtet att välja att antingen skriva &#160; eller &nbsp; när man vill ha in ett tecken med teckenkod 160 (alltså tecknet "non-breaking space") i texten på en xhtml-sida.

Man kan (och får!) alltså använda &nbsp; på precis samma sätt i xhtml som man kan och får i HTML.

Kan man på något sätt lägga det i css om man har en liknande struktur på flera ställen i dokumentet.
(i detta fallet ett tecken som ska komma på samma rad som föregående ord med ett space emellan...

Hmm...
Skulle vara med :after {content:'&nbsp;Ditt_tecken'} i så fall, men hur man får till det innehållet har jag inte lyckats klura ut.
:after funkar förresten inte i MSIE5.5.-, och entiteten skrivs in som den står med &-tecken och allt i NN6.2... Kanske någon i CSS-forumet vet mer om detta ?
Lite mer om :after och content: finns annars t.ex. på http://www.blooberry.com/indexdot/css/syntax/pseudo/pelemafter.htm och http://www.blooberry.com/indexdot/css/properties/generate/content.htm

Medlem sedan juni 20008 205 inlägg
#7

Skulle du vilja ha det i before/after i CSS borde ( :OO ) det funka med content: '\A0' om du använder MZ/NS6/Opera 6.

Medlem sedan juli 20013 378 inlägg
#8

Testat och klart i NN6.2 iaf ;) och det funkar - vågen spango! :birp

Medlem sedan sep. 2001649 inlägg
#9

vad står '\A0' för?

Medlem sedan juni 20008 205 inlägg
#10

Backslashen betyder att det som kommer härnäst är någonting magiskt (som \n betyder ny rad i C-baserade språk) och A0 är 160 skrivet hexadecimalt.

Medlem sedan juli 20013 378 inlägg
#11

Det är CSS-escapning av tecknet med kod 160!
Läs mer om detta i CSS-specifikationen på: http://www.w3.org/TR/REC-CSS2/syndata.html#q4 - där står bl.a.

...
Third, backslash escapes allow authors to refer to characters they can't easily put in a document. In this case, the backslash is followed by at most six hexadecimal digits (0..9A..F), which stand for the ISO 10646 ([ISO10646]) character with that number. If a digit or letter follows the hexadecimal number, the end of the number needs to be made clear. There are two ways to do that:

* with a space (or other whitespace character): "\26 B" ("&B")
* by providing exactly 6 hexadecimal digits: "\000026B" ("&B")
In fact, these two methods may be combined. Only one whitespace character is ignored after a hexadecimal escape. Note that this means that a "real" space after the escape sequence must itself either be escaped or doubled.

261 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)