Kapitel 6 Dokumentrepresentation När data lagras i filer eller sänds i kommunikation mellan datorer sker detta oftast i form av bytes med 256 möjliga värden (0 255). Man kan använda dessa värden för att koda någon viss information på många olika sätt. Det gäller att avsändare och mottagare använder samma konventioner. 6.1 Exempel: spelkort Säg t. ex. att vi skriver ett program som behöver kunna hantera vanliga spelkort. Kanske ska man kunna spela kort med varann över nätet och en server ska skicka ut information över nätet till andra program om vilka kort som har dragits. Eftersom det bara finns 52 möjligheter så räcker det bra med en byte för att lagra informationen. Vi skulle mer eller mindre godtyckligt kunna välja t. ex. en kodning där 0 = klöver två, 1 = klöver tre, 2 = klöver fyra,..., 50 = spader kung och 51 = spader ess. Ett annat sätt skulle vara att dela upp det i två byte per kort där den första byten anger kulör och den andra anger valör, t. ex. 1, 5 för spader fem; 2, 11 för hjärter knekt; 3, 10 för ruter tio och 4, 1 för klöver ess. Om vi ändå ska använda två byte skulle vi kunna välja koder från någon textkodning istället. Vi kan t. ex. använda koderna för tecknen SHDC för kulörerna (spades/hearts/diamonds/clubs) och koderna för tecknen 123456789TJQK för valören. Då lagras t. ex. spader två som 83, 50 vilket är ASCII-koderna för tecknen S och 2. En fil där spelkort har lagrats på det sista sättet är en textfil. Med t. ex. cat eller en editor som Emacs kan vi läsa att det står»s2«. De tidigare alternativen är dock inte textrepresentationer. Spader två skulle med det första förslaget lagras som en byte med värdet 39. (Felaktigt tolkad som en ASCII-text skulle det istället betyda ett citattecken.) Med det andra förslaget skulle det lagras som 1, 2, vilket felaktigt tolkat som ASCII skulle vara två olika kontrolltecken. Filer som inte är textfiler kallas binära filer. Sådant som bild, ljud och film lagras i allmänhet i binära filer. 6.2 MIME Det gäller alltså att de program som kommunicerar med varann är överens om hur data ska tolkas. När data skickas så följer det därför ofta med en etikett på vilken det står vad det är för slags data så att mottagaren ska få veta det. På sådana etiketter använder man ofta ett standardiserat format MIME för att beskriva olika format. Förkortningen står för Multipurpose Internet Mail Extensions, eftersom denna standard först utvecklades för datorpost, men den används i andra sammanhang också. MIME-typerna består av två delar med snedstreck emellan, t. ex. image/jpeg för en bild i JPEG-format, image/png för en bild i PNG-format osv. Den första delen anger alltså vad det är för typ av format och den andra vilket specifikt format det är. Andra möjliga förled är bl. a. audio för ljud, video för video och application för diverse information som måste behandlas av något särskilt program, t. ex. application/pdf eller application/ msword. Det är IANA som håller rätt på vilka beteckningar som är de officiella så att alla använder samma. 61
6. DOKUMENTREPRESENTATION Textfiler använder förleden text och i synnerhet kallas vanlig text text/plain. För text-typer kan man lägga till en specifikation av vilken teckenkodning som används på detta sätt: text/html; charset=iso-8859-1. Detta används till exempel i datorpost då det i brevhuvudet kan finnas en rad i stil med Content-Type: text/plain; charset=utf-8 som talar om att brevet innehåller ren text kodad med UTF-8. (Denna rad ser man vanligen inte, för program för att läsa datorpost brukar dölja sådana tekniska detaljer, men ha ett särskilt kommando som»visa hela huvudet«eller»visa original«som visar även detta.) 6.3 Uppmärkt text I många sammanhang är det vanligt att textfiler är uppmärkta med taggar som anger att en viss del av texten ska tolkas eller behandlas på ett visst sätt. En uppmärkning av Röda rummet skulle kunna börja <rubrik>stockholm i fågelperspektiv</rubrik> <mening>det var en afton i början av maj.</mening> <mening>den lilla trädgården på... och blommor.</mening> Här är kapitelrubriken uppmärkt och dessutom meningar. Det finns taggar som visar var de uppmärkta delarna börjar och var de slutar. En uppmärkning som anger ordklass för alla ord skulle kunna innehålla t. ex. något som <pron>det</pron> <verb>var</verb> <art>en</art> <subst>afton</subst> <prep>i</prep> <subst>början</subst> <prep>av</prep> <subst>maj</subst><punkt>.</punkt> 6.4 XML Exakt hur en sådan uppmärkning ser ut är olika i olika sammanhang. I en del fall har man kanske anledning att märka upp varje ord med ordklass. I ett annat fall kanske man vill märka upp bara kapitel och stycken. I ett tredje fall kanske man vill visa exakt hur en viss utgåva av boken såg ut och märka upp sidor och rader. Även syntaxen för hur hur man skriver uppmärkningar kan skilja sig åt, men numer är XML mycket populärt Extensible Markup Language. En fördel med att använda XML när man behöver ett märkspråk istället för att hitta på ett eget system är enhetlighet. Det finns en mängd verktyg som analyserar och konverterar XML-filer på olika sätt som man då kan återanvända. XML är designat för att vara lätt att tolka och behandla med datorprogram och kom 1998. Det är en förenkling av ett tidigare system SGML (Standard Generalized Markup Language). (SGML blev ISO-standard 1986 och byggde på ett tidigare system GML på IBM från 1960-talet.) 6.4.1 Taggar Ett element i XML börjar med en starttagg och slutar med en sluttagg och däremellan kan det finnas text och andra element. Starttaggar skrivs med <> runt ett namn och sluttaggarna likadant men med / före namnet, så som i exemplen ovan. Det som står mellan starttaggen och sluttaggen kallas elementets innehåll. Innehållet i elementet <name>melker Melkersson</name> är t. ex.»melker Melkersson«. Innehållet kan i sin tur innehålla nya element: <name><firstname>melker</firstname> <lastname>melkersson</lastname></name> Element måste ligga helt inom andra element. Det går inte att låta dem korsa varandras gränser i stil med <kursiv>herr <name>melker</kursiv> Melkersson</name>. Här är det fel vid </kursiv> eftersom name-taggen inte har avslutats än. När ett element har ett tomt innehåll behöver man inte skriva <foo></foo> utan man kan istället skriva på det speciella sättet <foo />. 1 Det är skillnad på versaler och gemener i taggar. 6.4.2 Attribut Ett element kan även innehålla attribut med värden. Exempel: <name type="person">melker Melkersson</name> Här har elementet ett attribut type med värdet person. Man använder dubbla eller enkla citattecken runt värdena. 1 Mellanrummet behövs inte där, utan det fungerar bra med <foo/>, men det skadar inte och kan vara praktiskt när man skriver XHTML av kompatibilitetsskäl med äldre webbläsare. 62
WWW och HTML Ett annat sätt att märka upp en mening med ordklasser skulle kunna vara <w wc="pron">det</w> <w wc="verb">var</w> <w wc="art">en</w> <w wc="subst">afton</w> <w wc="prep">i</w> <w wc="subst">början</w> <w wc="prep">av</w> <w wc="subst">maj</w><inter>.</inter> Här användes en tagg w för ord (word) med ett attribut wc (= word category = ordklass). 6.4.3 Toppnivå Ett XML-dokument ska bara innehålla ett element (som normalt innehåller andra element i sitt innehåll). Före detta finns en deklaration i stil med <?xml version="1.0" encoding="utf-8"?> Den visar vilken version av XML som används och vilken teckenkodning detta dokument använder. (Om inget sägs om detta så är det UTF-8.) 6.4.4 Teckenreferenser och entiteter I text kan man lägga in vilka tecken som helst genom att skriva deras Unicode-kod mellan &# och ;. Ett promilletecken ( ) kan man t. ex. beteckna med. Ofta använder man hexadecimala beteckningar istället som börjar med x. Då blir t. ex. promille istället. Vet du inte vad hexadecimala tal behöver du inte vara orolig för det. Det räcker med att känna igen att referenserna kan se ut på den formen också. Entiteter använder också &; men däremellan skriver man istället ett namn, kanske t. ex. för. Vilka entitetsnamn som finns är olika för olika slags XML-dokument, men alltid finns i alla fall & (&) < (<) > (>) ' (') " (") eftersom dessa tecken ingår i XML-syntaxen och därför kan vara besvärliga att skriva annars i vissa fall. Observera att de numeriska teckenreferenserna alltid sker till Unicode-koder oavsett vilken teckenkodning som XML-filen använder. Även om man har t. ex. en Latin1-fil med <?xml version="1.0" encoding="iso-8859-1"?> så går det ändå att på detta sätt ha med vilka tecken som helst. 6.4.5 Olika XML-språk Med XML kan man definiera en mängd olika märkspråk som använder samma grundsyntax men helt olika uppmärkning. En definition av ett sådant språk anger inte bara vilka taggar som ska finnas, utan även hur de förhåller sig till varandra, t. ex. att ett <word> kan finnas inne i en <sentence> men inte tvärtom. Ett exempel är OpenDocument för officeprogram. Olika officeprogram har normalt sparat sina filer i speciella binära format som är olika för olika program. OpenDocument är ett försök att skapa en gemensam plattform som bygger på XML. Openoffice.org använder denna. I språkteknologiska ti"llämpningar används ofta XML-uppmärkta texter. Ett exempel är TEI (Text Encoding Initiative). I korpuslingvistik används ofta ett format som heter XCES (Corpus Encoding Stanford for XML). 6.5 WWW och HTML 6.5.1 Internet Det var genom WWW som Internet slog igenom bland folk i stort, och bland annat därför har många blandat samman dessa, men Internet är själva nätverket mellan datorerna vilket har funnits längre än så, och som används till annat än webben också. Det fanns olika mindre nätverk mellan datorer tidigare, men den direkta föregångaren till dagens Internet är ARPANET från 1969 och framåt, som utvecklades som ett militärprojekt i USA. Samma teknik användes sen i universitetsnätverk och 1983 skapades ett gemensamt nätverk mellan universitet i hela USA. (Först senare kom även företag in på nätet.) I Sverige kopplades det svenska universitetsnätet SUNET samman med bl. a. detta amerikanska universitetsnätverk i slutet av 80-talet. Alltmer blev det så att olika datornätverk gick över till samma teknik och förenade sig med andra nätverk så att det blev ett enda stort Internet. Datorer på Internet har ett domännamn på formen sonorant.lingfil.uu.se med punkter emellan i ett hierarkiskt system med den största delen sist. I exemplet är se en toppdomän (som står för 63
6. DOKUMENTREPRESENTATION Sverige), uu en underdomän till se (uu = Uppsala Universitet) och lingfil en underdomän till uu.se (institutionen för lingvistik och filologi), och slutligen är sonorant namnet på just denna dator. 6.5.2 World Wide Web Vorld Vide Veb (VVV)@World Wide Web (WWW), webben, skapades av engelsmannen Tim Berners- Lee på CERN. (Den första webbservern fanns på http://info.cern.ch och gjordes tillgänglig den 6 augusti 1991.) Det var en kombination av hypertext och det globala datornätet Internet, så att länkar i texten kunde gå till dokument på en helt annan plats på nätet. Varje dokument på webben har ett beteckning som talar om var en webbläsare kan hitta den en URL (Uniform Resource Locator). (Mer generellt än URL är URI (Uniform Resource Identifier) som omfattar även sådana beteckningar som identifierar resurser utan att tala om en specifik plats.) Den kan i ett enkelt fall se ut i stil med http://stp.lingfil.uu.se/datorer/print.html. Första delen http anger schemat vilken metod webbläsaren ska använda för att få tag på dokumentet. Där står http för»hypertext transfer protocol«det normala sättet att kommunicera på Toppdomäner: Bland de äldsta toppdomänerna på Internet finns bl. a. mil för USA-militär, gov för annat»us government«, edu för skolor och universitet, org för organisationer och com för företag. (Ofta så följs dock inte denna indelning.) Vid internationaliseringen av Internet tillkom tvåbokstaviga toppdomäner för länder med samma landskoder från ISO 3166 som i tabell 4.1 på s. 42, t. ex. se för Sverige. Dock används här inte gb för Great Britain utan istället uk för United Kingdom. Toppdomänen us för USA används inte särskilt mycket. Senare har fler allmänna toppdomäner tillkommit, som info och biz. I många fall används landskoder flitigt även i helt andra länder. Domänen tv för den polynesiska önationen Tuvalu används t. ex. för flera webbplatser med televisionsanknytning. Domänen nu som är populär bland annat i Sverige hör egentligen till ön Niue med drygt 2 000 invånare. mellan webbservrar och webbläsare, utvecklat särskilt för WWW. Delen stp.lingfil.uu.se anger domänadressen för den dator som ska kontaktas. Delen /datorer/print.html slutligen är det som skickas till webbservern på stp.lingfil.uu.se i detta fall och som anger just vilket dokument på den webbservern som vi önskar. I många fall börjar domänadressen för en webbserver med www, men det är inget speciellt med dessa tecken i en webbadress, utan det är bara så att man ofta kallar den datorn som fungerar som webbserver för www. Början http:// utelämnas ofta när webbadresser ges, framförallt i tryck, reklam, osv. Det tas då för givet att det är schemat http som används. 6.5.3 HTML Hypertext Markup Language (HTML) är det vanligaste formatet för information på webben och skapades också av Tim Berners-Lee. Det är baserat på SGML. 1994 grundade Berners-Lee World Wide Web Consortium (W3C) på MIT, och det är W3C som fortfarande koordinerar utvecklingen av WWW. Arbetet med HTML sker genom en HTMLarbetsgrupp där. Den senaste versionen av HTML är HTML 4.01 (från 1999). W3C har inga planer på utöka den ytterligare, utan för framtiden satsar man på att gå över helt till XML-format. (Det är även W3C som håller i XML.) XHTML 1.0 var en omformulering av innehållet i HTML 4 så att det är korrekt XML. I framtida versioner av XHTML är det tänkt att nya funktioner ska föras in. Den senaste version är XHTML 1.1 med bara smärre förändringar, men XHTML 2.0 är på god väg. Ibland menar man med»html«bara versionerna fram t. o. m. HTML 4.01, men ibland även de XML-baserade versionerna. MIME-typerna är text/html för»traditionell«html och application/xhtml+xml for XHTML. Varje gång en webbserver skickar ut ett dokument till en webbläsare så skickar det först ut bland annat en rad i stil med Content-Type: text/html; charset=utf-8 som talar om vad det är för slags data som kommer därnäst. 64
Repetitionsuppgifter Sökvägar Vilka av följande sökvägar är absoluta, och vilka är relativa? 1. /local/kurs 2. rummet.words 3. bild/kanin.jpeg 4../bin/zork 5. ~ellen/foo/bar 6. local/kurs/gdb06/ 7. / 8... Skalkommandon Dessa uppgifter ska lösas med skalkommandon. Oftast behövs ett kommando med rör och flera delkommandon. Svaret ska vara ett kommando som ger svaret på frågan när det körs. Helst ska kommandot inte ge någonting mer, så ingen manuell utsökning ska behövas. 1. Hur många ord innehåller filen /local/ texts/jabberwocky? æø och en del andra tecken: Tangenten till vänster om högra Ctrl-tangenten fungerar här som kombinationstangent. Den kallas ibland för Compose eller Multi_key. Genom att först trycka på den och sen på andra tangenter så kan man generera diverse tecken som inte finns på tangentbordet. Följd av»ae«ger den»æ«; följd av»c,«ger den»ç«; osv. Det går ofta att gissa vilka tecken man ska kombinera. I flera fall får man något som kan ses som en variant av ett visst tecken genom att kombinera det med sig självt. Med kombinationstangenten, x, x får man t. ex. multiplikationstecknet. 2. Hur många ord får en automatöversättning till spanska (med translate) av samma fil? 3. På en rad i /local/kurs/gdb06/rummet.txt finns texten»raket«. Hur lyder den raden? 4. Om Strindberg hade skrivit Røda rummet på en dansk skrivmaskin kanske han hade fått lov att använda æ och ø istället för ä och ö. Hur hade texten i /local/kurs/gdb06/rummet.txt sett ut då? 5. I /local/texts/jabberwocky finns en rad med ordet»bird«. Hur många tecken har den raden? 6. Ordet»his«finns däremot på flera rader i samma fil. Hur lyder den sista av dessa? 7. Hur många ord finns på den första raden i /local/kurs/gdb06/rummet.txt? 8. Översätt texten»to be or not to be«med hjälp av translate från engelska till franska och sen direkt tillbaka till engelska igen. 9. Sortera filerna i /local/kurs/gdb06/ gdb-fil-labb/ efter hur många byte stora de är. 10. Vilket ord i /local/texts/jabberwocky innehåller bokstaven x? 11. Vad finns det för prepositioner i /local/kurs/ gdb06/rummet.words som bara förekommer en gång var? 12. Vilket är den vanligaste verbformen i /local/ kurs/gdb06/rummet.words? 13. Några rader i dikten i /local/texts/ jabberwocky är upprepade. Vilka? Redovisning Skicka svar till Per senast onsdagen den 8/11. Klarar du inte allt är det ingen katastrof. Det blir det inget ältande med kompletteringar, utan ni klarar det ni klarar, så var noga med att göra helt rätt direkt. 65
Laboration 6: XML och HTML Först ska ni göra en del saker med en XML-fil i Emacs. Meningen är dels att få lite praktisk övning i hur XML-filer ser ut, men också att få exempel på hur en emacs-mode (ett emacsläge) kan bete sig och hur man kan ta reda på mer om det. XML i Emacs Öppna filen /local/kurs/gdb06/xml/svt1.xml i Emacs. Observera att det står %% i informationsraden. Det betyder att du inte har rätt att ändra i denna fil. Om du försöker så får du ett meddelande»buffer is read-only«i ekoarean. Använd C-x C-w (write-file) för att spara en kopia hos dig, i den katalog som du utför denna labb i. Nu försvinner %%, för din kopia får du ändra i. Innehållet är tydligen en tevetablå i nåt XMLformat. Uppgift 6.1 Vad är det för tagg för toppnivån i detta dokument? Notera härnäst att det står (nxml Valid) i informationsraden. Det första inom parentesen är namnet på det editeringsläge (den mode, arbetsmiljö) som Emacs befinner sig i. Olika editeringslägen underlättar editering av olika slags filer. Här, i nxml-mode, görs det bland annat genom att taggarna och själva texten skrivs i olika färger så att det ska bli lättare att se vad som är vad. Själva filen i sig är en vanlig textfil där det inte finns sådant som olika färger, utan det är Emacs nxml-mode: Detta är inte den vanliga XMLmoden i Emacs, utan ett alternativ med fler finesser. Det är därför den heter nxml. som förstår hur XML-filer ser ut och därmed kan visa olika delar på olika sätt. De olika raderna i filen börjar med olika många mellanslag för att det ska bli lättare att läsa så att man ser hur strukturen är. Ett program som förstår sig på XML och som ska göra något med denna fil kommer inte att bry sig om hur indragen är, men det är bra om filen är någorlunda läsbar för människor också! Detta kan Emacs ordna åt dig. Teveprogrammet Jasper Pingvin saknar starttid. Gå till den tomma rad där det borde stå och tryck TAB så får du ett lagom indrag. TAB fungerar så i de flesta emacslägen, att istället för att alltid gå fram lika långt så går det fram»lagom«långt för det som man just editerar. Skriv nu in <starts>18:25 (precis så, utan sluttagg). Observera att där det förut stod Valid i informationsraden står det nu Invalid. En finess i detta emacsläge är att det hela tiden kollar av ifall du har en korrekt XML-fil eller inte. Med röd understrykning visas var det finns fel. Uppgift 6.2 Var visas det vara fel? Varför just där? Det finns olika kommandon i olika emacslägen. De som är speciella för en viss mode börjar ofta med C-c. För att få en beskrivning av den emacsmode man är i använder man kommandot C-h m. Gör så! I den hjälp du får upp nämns ett kommando som avslutar det aktuella elementet genom att lägga in en sluttagg. Uppgift 6.3 Hur utför man det kommandot? Gör så! Därmed fick du mindre att skriva (och riskerade inte att råka skriva fel på sluttaggen). Nu bör bufferten ha blivit Valid igen. Med detta menas nu bara att det är korrekt XML-syntax. 67
LABORATION 6: XML OCH HTML Dessutom kan man kräva att det uppfyller specifika krav för ett visst XML-märkspråk. För att tala om vilka särskilda krav som gäller för just denna fil, så välj XML Set Schema File... och ange filen /local/kurs/gdb06/xml/schedule.rnc. Du får en fråga»save schema location to... «Svara y! Nu minns Emacs vilket schema som gäller för denna fil. Där beskrivs en ganska petig syntax för hur de olika delarna av en sån här tevetablå måste se ut och denna fil stämmer inte riktigt med denna syntax. Så nu hittas flera fel. Tryck på Invalid i informationsraden för att gå till det första felet. Med C-c C-n kan du gå till nästa fel. Varje gång du går till ett fel så kommer det ett litet meddelande om vad felet är i ekoarean. För att gå till det första felet utan att behöva använda musen kan du använda M-< som går till början av bufferten innan du går till nästa fel. Uppgift 6.4 Rätta alla felen! Exakt hur syntaxen måste vara här bör framgå av de exempel som inte ger fel. I och med att Emacs vet precis vilken syntax som gäller för denna fil så kan man få mycket hjälp när man lägger till nya saker i filen också, bland annat genom att man kan få komplettering av symboler så att man inte behöver skriva hela»programme«osv. Uppgift 6.5 Hur ska man trycka för att få komplettering av symboler? Det beskrivs i hjälptexten till detta emacsläge. Skriv till ett program i slutet av tablån. Börja med bara <p och använd sedan komplettering. När det då står <programme så använd kommandot C-c C-b som lägger in ett helt block. Uppgift 6.6 Härnäst är det dags för en tagg med starts. Hur lite måste du skriva härnäst innan du kan få fram den med komplettering? Uppgift 6.7 Fullfölj detta nya programinslag i tablån och lägg till ytterligare två. Du kan hitta på fritt eller ta från verkligheten, vilket du vill. Se till att din slutliga fil är»valid«och använder lagom indrag som underlättar läsningen. Använd kortkommandon. Att publicera på WWW Skapa en underkatalog public_html till din hemkatalog. I den kan du lägga sådant som du vill publicera på WWW. Vår webbserver använder den vanliga konventionen att använda ~ i urlar för att visa att de hör till en viss användare. Om det t. ex. skulle finnas en fil ~ellen/public_ html/slottet.jpg skulle man kunna se detta fotografi på webben på http://stp.lingfil.uu.se/ ~ellen/slottet.jpg. I de sidor du lägger ut kommer förstås ditt användarnamn stå istället för ellen. Kopiera filerna från /local/kurs/gdb06/ bilder/ till din katalog public_html och prova att titta på någon av dessa bilder i webbläsaren genom att ge korrekt URL. Uppgift 6.8 Hur lyder en sådan fullständig URL till en av dessa bilder? HTML Det finns många introduktioner till HTML på nätet. Läs»Dave Raggett s Introduction to HTML«som finns på http://www.w3.org/markup/guide/. Den fil du skapar i denna labb ska dock vara XHTML. Det innebär följande skillnader:»the </p> is optional, unlike the end tags for elements like headings.«nix, i XML måste alla sluttaggar finnas med! img: Dessa element har inget innehåll, utan allt sägs med attribut och värden. I XML måste slutet markeras med / så här: <img... / >. Uppgift 6.9 Öppna en ny fil ~/public_html/ gdblabb6.html. Observera att det står»(html Fill)«i Moderaden. HTML eftersom Emacs är i HTML-mode. Eftersom du ska skriva XHTML som är XML så kan nog nxml-mode fungera bättre. Du kan gå över till det med kommandot M-x nxml-mode RET. Du får ett meddelande Using schema... som slutar med xhtml.rnc vilket anger att Emacs vet om att det är XHTML du ska skriva. Därigenom kommer den att vara bättre på att hitta fel och du kommer att få komplettering på taggar, attribut och t. o. m. värden. 68
Redovisning Använd /local/kurs/gdb06/xml/start.xhtml som mall istället för det som ges i artikeln. För att göra detta kan man använda C-x i. Det lägger in innehållet i en fil i den buffert du editerar. Uppgift 6.10 Skriv där en XHTML-fil som uppfyller följande. Utgå från mallen start.xhtml (se ovan)! Ange en titel Använd h1 en gång och minst nån h2 Använd p och em Använd img med minst två bilder (t. ex. de givna) Använd ul, ol eller dl Länka till minst två andra sidor Resultatet ska vara giltig XHTML! Avsluta med att kontrollera på http: //validator.w3.org/ att ditt dokument är korrekt XHTML. Den validatorn ska inte ha några anmärkningar alls på din fil! Om du inte kommer på nåt att skriva så kan du t. ex. välja mellan rubrikerna Mitt sommarlov Tråkiga labbuppgifter jag haft Nietzsche och Kapten Zoom Det var en mörk och stormig natt Utmaningen blir att få de givna bilderna att passa in. Uppgift 6.11 Se vilken effekt detta ger för hur Firefox visar tv.xml och titta i tv.css för att se hur sådant kan göras och ändra nåt. Titeln Garage - älska film i tevetablån är inte helt bra förresten. Strecket där borde hellre vara det längre strecket EN DASH. Det tecknet finns inte i Latin1, men det går att lägga in med med en numerisk teckenreferens. Uppgift 6.12 Titta i hjälpen för nxml-mode för vad det finns för kommando för att lägga in godtyckliga tecken genom att ge deras Unicode-namn och använd det. WWW Snitsa gärna till din gdblabb6.html så mycket du orkar, men fortfarande gäller att validatorn inte ska klaga på nåt! Har du redan andra snitsiga webbsidor så kan du ju länka till dem för att visa dig på styva linan! Redovisning Skicka svar till Per senast måndag 13/11. Eventuella kompletteringar senast 16/11. Överkurs Mer teve Kopiera ut din tv.xml så att den publiceras på webben. Öppna den i Firefox. Dokumentträdet visas utan någon särskild formattering eftersom webbläsaren inte vet något om hur dessa element ska formatteras. Den vet bara att detta är XML. Kopiera /local/kurs/gdb06/xml/tv.css till samma katalog och lägg in en rad <?xml-stylesheet type="text/css" href="tv.css"?> som andra rad i kopian. I den filen ges information om hur olika element ska visas. 69
Innehåll 0 Introduktion 3 0.1 Operativsystem.......................................... 3 0.2 Unix................................................ 3 0.3 GNU............................................... 4 0.4 Linux............................................... 5 0.5 Persondatorer och Microsoft................................... 5 0.6 Unix och Unix-liknande system idag.............................. 6 0.7 Det grafiska användargränssnittet................................ 6 0.8 Vårt datorsystem......................................... 7 Våra datorsalar.......................................... 7 Att logga in............................................ 7 Ljud................................................ 8 1 Filer och kataloger 9 1.1 Filnamn.............................................. 9 Filnamnsändelse......................................... 9 Osynliga filer........................................... 10 1.2 Kataloger............................................. 10 Filträdet.............................................. 10 Fullständiga sökvägar....................................... 10 1.3 Grafisk filhantering........................................ 11 1.4 Desktop.............................................. 11 1.5 Textfiler.............................................. 12 1.6 Editorer.............................................. 12 Emacs............................................... 12 1.7 Filskydd.............................................. 13 Laboration 1: Intro och filer 15 Datorpost................................................ 15 Grafisk filhantering........................................... 15 Emacs.................................................. 17 Jag vill öva mera!............................................ 17 Slutord................................................. 18 2 Skalet 19 2.1 Terminalen............................................ 19 2.2 Skalet............................................... 20 2.2.1 Kommandon....................................... 20 2.2.2 Argument till kommandon................................ 20 71
INNEHÅLL 2.2.3 Jokrar........................................... 21 2.2.4 Aktuell katalog...................................... 21 2.2.5 Väljare (options)...................................... 21 2.2.6 Kommandon och program................................ 23 2.2.7 När det blir fel...................................... 23 2.3 Relativa sökvägar......................................... 24 2.4 Filhantering i skalet........................................ 24 2.4.1 Lista filer......................................... 24 2.4.2 Kopiera filer........................................ 24 2.4.3 Flytta filer......................................... 24 2.4.4 Ta bort filer........................................ 24 2.4.5 Skapa och ta bort kataloger............................... 24 Laboration 2: Skalet 25 Emacs.................................................. 25 Terminal................................................. 25 Skalet.................................................. 25 Redovisning............................................... 27 3 Mer om skalet 29 3.1 Omdirigering........................................... 29 3.2 Miljövariabler........................................... 30 3.3 Expansion av skalet........................................ 30 3.4 Dokumentation.......................................... 30 3.4.1 man-sidor......................................... 30 3.4.2 --help.......................................... 32 3.4.3 Kommandosyntax.................................... 32 3.5 Filskydd i skalet.......................................... 33 3.6 Utskrifter från skalet....................................... 33 3.7 Skalskript............................................. 33 Laboration 3: Mer om skalet 35 Expansioner i skalet.......................................... 35 Det var en gång.............................................. 35 Omdirigering.............................................. 35 Dokumentation............................................. 36 Skalskript................................................ 37 Emacs tutorial.............................................. 37 Redovisning............................................... 38 4 Ännu mer om skalet 39 4.1 Kommandorör.......................................... 39 4.2 Texthantering........................................... 39 4.2.1 echo............................................ 40 4.2.2 grep............................................ 40 4.2.3 head............................................ 40 4.2.4 fmt............................................ 40 4.2.5 more............................................ 40 4.2.6 sort............................................ 40 4.2.7 tail............................................ 40 72
4.2.8 tr............................................. 40 4.2.9 uniq............................................ 41 4.2.10 wc............................................. 41 4.3 Språkinställningar......................................... 41 4.3.1 Språkinställning i Gnome................................ 41 4.3.2 Språkinställningar i skalet................................ 41 4.3.3 Att sätta om en variabel temporärt........................... 42 4.3.4 Sortering......................................... 42 4.3.5 När använda detta?.................................... 43 4.4 Köra program i bakgrunden................................... 43 Laboration 4: Ännu mer om skalet 45 Sortering................................................ 45 Översättning.............................................. 45 Gott och blandat............................................ 45 Frekvensordlista............................................. 46 Påhitt.................................................. 46 Redovisning............................................... 46 5 Teckenrepresentation 47 5.1 Teckenkoder............................................ 47 5.2 Att ange teckenkodning..................................... 47 5.3 ASCII............................................... 47 5.4 Kontrolltecken.......................................... 48 5.5 ISO 8859-*............................................ 48 5.6 Microsoft Windows........................................ 49 5.7 ISO 10646 = UCS Unicode.................................. 49 5.7.1 Kombinerande tecken.................................. 50 5.7.2 Att lagra Unicode i filer................................. 50 5.8 Vad är olika tecken?....................................... 51 5.8.1 Flera tecken räknas som samma............................. 52 5.9 Att hantera filer med olika teckenkodning........................... 52 5.9.1 Olika teckenkodningar i Emacs............................. 52 5.9.2 Att konvertera mellan teckenkodningar......................... 53 5.10 Att skriva andra tecken i Emacs................................. 53 5.11 Hos oss.............................................. 53 Laboration 5: Emacs, Info och teckenkodningar 55 Kontrolltecken............................................. 55 Info................................................... 55 Skapa en UTF-8-fil........................................... 57 iconv................................................... 57 Uppror!................................................. 58 recode.................................................. 58 Överkurs................................................ 59 Redovisning............................................... 59 73
INNEHÅLL 6 Dokumentrepresentation 61 6.1 Exempel: spelkort........................................ 61 6.2 MIME............................................... 61 6.3 Uppmärkt text.......................................... 62 6.4 XML................................................ 62 6.4.1 Taggar........................................... 62 6.4.2 Attribut.......................................... 62 6.4.3 Toppnivå......................................... 63 6.4.4 Teckenreferenser och entiteter.............................. 63 6.4.5 Olika XML-språk..................................... 63 6.5 WWW och HTML........................................ 63 6.5.1 Internet.......................................... 63 6.5.2 World Wide Web..................................... 64 6.5.3 HTML........................................... 64 Repetitionsuppgifter 65 Sökvägar................................................. 65 Skalkommandon............................................ 65 Redovisning............................................... 65 Laboration 6: XML och HTML 67 XML i Emacs.............................................. 67 Att publicera på WWW........................................ 68 HTML.................................................. 68 Överkurs................................................ 69 Mer teve.............................................. 69 WWW............................................... 69 Redovisning............................................... 69 Register 75 74
Register Detta register omfattar kapitel 0 6 och ersätts med ett nytt när nästa kapitel kommer ut.. (i sökvägar), 24. (kommando), 33.. (i sökvägar), 21, 24 < (i omdirigering), 29 > (i omdirigering), 29 &, se bakgrunden \, se bakstreck (i kommandorör), 39, se tilde Aegis, 4 AIX, 4, 6 aktuell katalog, 21 Alice i Underlandet, 16 ANSI, se även windows-1252 användargränssnitt, 6 7 användarnamn, 7 apostrof, 52 Apple Computer, 3, 5 7 arabiskt alfabet, 49 arbetskatalog, se aktuell katalog arbetsstation, 4 argument, 20 ARPANET, 63 ASCII (American Standard Code for Information Interchange), 47 ASR33, 19 Babbage, Charles, 4 backslash, se bakstreck bakgrunden köra program i, 43 bakstreck, 10, 46 bash, 20 Bell Labs, 3, 6, 20 Berkeley Software Distribution (BSD), 4, 6 Berners-Lee, Tim, 64 binärfiler, 9 BMP (Basic Multilingual Plane), 50, 51 Bourne, Steve, 20 broken bar, 39 byte, 9, 47 jämfört med tecken, 51 C, 9 carriage return, se returtangenten Carroll, Lewis, 16 cat (kommando), 20, 30 cd (kommando), 20, 21, 23 chmod (kommando), 33 citattecken, 52 Command Line Interface (CLI), 19 Common Desktop Environment (CDE), 7 compose (tangent), se kombinationstangent cp (kommando), 20, 21, 24, 32 CRLF, 48 data, 3 date (kommando), 22 dator, 3 datorpost, 15 Debian GNU/Linux, 6 Desktop (katalog), 11 12 Dodgson, Charles Lutwidge, se Carroll, Lewis domännamn, 63 EBCDIC, 47 echo (kommando), 27, 40 editor, 12 Emacs, 12, 37, 52, 55 Engelbart, Douglas, 7 ENIAC, 4 Enigma, 4 factor (kommando), 29 75
Register Fedora Core, 6, 7 fil, 9 osynlig, 10 skydd, 13, 33 filnamn, 9 10 filnamnsändelse, 9 10 filträd, 9 Firefox, 15 Fitzschkloff, Ferdinand, 58 flagga, se även väljare, 22 fmt (kommando), 36, 40 free software, 4 Free Software Foundation (FSF), 4 FreeBSD, 6 fri programvara, 4 fullständig sökväg, se sökväg, fullständig Gentoo, 6 glyf, 52 Gnome, 7 GNU, 4 5, 7, 20, 32, 55 GNU Emacs, se Emacs GNU/Linux, 5 7 Graphical User Interface (GUI), 7 grekiskt alfabet, 49 grep (kommando), 40 grupp, 13 Gällmo, Gunnar, se Fitzschkloff, Ferdinand han, 49 hangul, 49 head (kommando), 37, 40 hebreiskt alfabet, 49 hemkatalog, 7, 10 hiragana, 49 HP-UX, 6 HTML, 10 HURD, 5 hypertext, 7, 64 hårdvara, 3 IANA, 61 IANA (Internet Assigned Numbers Authority), 47 IBM, 5, 47 IBM PC, 5 iconv (kommando), 53 ideografiska tecken, 49 Info, 30, 55 informationsrad (i Emacs), 25, 35, 37, 52, 57, 58, 67 inloggning, 7 inputmetod i Emacs, 53 Internet, 63 64 ISO, 41, 49 ISO 639-1, 42 ISO 3166-1, 42 ISO 8859-*, 48, 49 ISO 8859-1, 49, 50 ISO 10646, se UCS japanska, 49 Java, 10 joker, 21, 30 Kaka, Ellen, 10 11, 13, 17 katakana, 49 katalog, 10 aktuell katalog, 21 KDE, 7 kinesiska, 49 klipp-och-klistra, 17 kombinationstangent, 65 kombinerande tecken, 50 kommandorad, 19 kommandorör, 39 kompilator, 9 komplettering, 16 i bash, 25 i Emacs, 17 kontrolltecken, 48 koreanska, 49 kyrilliskt alfabet, 49 källkod, 9 LANG (miljövariabel), 41, 53 värde C, 43 Latin1, 49, se även ISO 8859-1 Linux, se även GNU/Linux, 5 locale, 41, 53 lodstreck, 39 lpr (kommando), 33 ls (kommando), 20 22, 24, 30, 32 lösenord, 7 märkspråk, 63 Macintosh, 7 MacOS, 3 MacOS X, 3, 6 man (kommando), 30 76
Register man-sida, 30 Massachusetts Institute of Technology (MIT), 4, 5, 7, 12, 64 Melkersson, Melker, 62 mellanslag i filnamn, 9, 21, 22 meta-tangent i Emacs, 38 Microsoft, 5 7 Microsoft Windows, 3, 6, 7, 49 miljövariabel, 30 miljövariabel ändra värde, 42 MIME, 61 minibuffert (i Emacs), 17 minidator, 4 Minix, 5 MIT, se Massachusetts Institute of Technology mjukvara, 3 mkdir (kommando), 20, 24 modeline (i Emacs), se informationsrad more (kommando), 40 MS-DOS, 5, 6 Multi_key (tangent), se kombinationstangent mus, 6, 7 mv (kommando), 20, 24 Nautilus, 11 NetBSD, 6 Niue, 64 omdirigering, 29 Open Group, The, 6 OpenBSD, 6 OpenDocument, 10, 12, 63 operativsystem, 3 option, se väljare Palo Alto Research Center (PARC), 7 Paterson, Tim, 6 PATH (miljövariabel), 30 PC-DOS, 6 Perl, 10 persondator, 5 pipe, 39 plain text, 12, 47 plan (i UCS/Unicode), 50 POSIX, 6 program, 3 Projekt Runeberg, 58 prompt, 20 pwd (kommando), 20, 21 Python, 10, 16 QDOS, 6 recode (kommando), 58 Red Hat Linux, 6 redirection, se omdirigering relativ sökväg, se sökväg, relativ return, se returtangenten returtangenten, 20 rm (kommando), 20, 24 rmdir (kommando), 20, 24 roten, 10 Runeberg, se Projekt Runeberg SGML (Standard Generalized Markup Language), 62 shell, se skal shell script, se skalskript Single Unix Specification, 6 skal, 20 skalskript (shell script), 33 SMP (Supplementary Multilingual Plane), 50 Solaris, 4, 6 sort (kommando), 36, 40 sortering, 42 språkinställning, 41 SRI, se Stanford Research Institute SSP (Supplementary Special-purpose Plane), 50 Stallman, Richard M., 4, 5, 12 standard input, 29, 39 standard output, 29, 39 Stanford Research Institute (SRI), 7 stdin, se standard input stdout, se standard output SUSE Linux, 6 sökväg fullständig, 10, 24 relativ, 24 tagg, 62 tail (kommando), 37, 40 Tanenbaum, Andrew S., 5 tecken jämfört med byte, 51 teckenkodning, 12, 47 TEI (Text Encoding Initiative), 63 teleprinter, 19 77
Register Teletype Corporation, 19 terminal, 19 TEX, 10 textfil, 12 textredigerare, se editor tidsdelning, 6 tilde ( ) i sökvägar, 11 Torvalds, Linus, 5 tr (kommando), 40 translitterering, 53 Turing, Alan, 4, 22 Tuvalu, 64 Ubuntu, 6 UCS (Universal Character Set), 49, se även Unicode Ultrix, 4 underkatalog, 9, 10 undo, se ångra Unicode, 49, se även UCS uniq (kommando), 36, 41 Univac I, 4 University of California, Berkeley, 4 Unix, 3 4 varumärke, 6 Un*x, 6 URI (Uniform Resource Identifier), 64 URL (Uniform Resource Locator), 64 US-ASCII, se ASCII user interface, se användargränssnitt UTF-8, 51 UTF-16, 51 UTF-16BE, 51 UTF-16LE, 51 UTF-32, 51 utloggning, 8 utskrift, 33 långa, 22 med argument, 22 X Window System, 5, 7 X11, se X Window System XCES (Corpus Encoding Stanford for XML), 63 Xerox, 7 XHTML, 64 XML, 10, 62 Z3, 4 Zuse, Konrad, 4 ångra (undo) i Emacs, 58 vagnretur, se returtangenten wc (kommando), 31, 41, 51 webbpost, 15 vertical bar, 39 vi, 12 windows-1252, 49 WinLatin1, se windows-1252 working directory, se aktuell katalog World Wide Web (WWW), 64 väljare, 21 kombinera, 23 78