Ladda ner presentationen
Presentation laddar. Vänta.
1
2D1522 Datorteknik och -kommunikation
XML och Unix 2D1522 Datorteknik och -kommunikation © Björn Hedin, NADA/KTH 2002
2
Dagens föreläsning Syfte Mål
Få en introduktion till XML, vilket är det vanligaste dataformatet för att strukturera data idag. Lära er grunder och principter i Unix, vilket det händer att man stöter på “i verkligheten” Mål Lära er vad XML är, Skillnaden mellan “well formed och valid” Hur man skriver en DTD Tillräckligt mycket Unix-kunskap för att klara laborationen © Björn Hedin, NADA/KTH 2002
3
XML eXtensible Markup Language © Björn Hedin, NADA/KTH 2002
4
Vad är XML Ett meta-märkspråk med vilket man kan bygga märkspråk som xhtml, wml, smil etc. Inget exekverande programspråk, endast för att strukturera data. Rekommendation förvaltad av W3C. XML-familjen = XML + relaterade rekommendationer som xslt, xpath, xlink mm. © Björn Hedin, NADA/KTH 2002
5
Exempel - XHTML <?xml version="1.0">
<?xml-stylesheet type="text/css" href="style.css" type="text/css" /> <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>Personlig webbsida för Förnamn Efternamn</title> </head> <body> <p align="center"> <img src="/kth/bilder/nada.gif" alt="Nada" width="468" height="68"/> </p> </body> </html> © Björn Hedin, NADA/KTH 2002
6
Exempel - SMIL <?xml version="1.0"?> <smil> <head>
<layout> <root-layout height="350" width="600" title="Universal SMIL Document"/> <region id="w" left="174" top="100" height="47" width="63" z-index="3" /> </layout> </head> <body> <video src="Help.mov" begin="0.00s" end="11.00s" /> </body> </smil> © Björn Hedin, NADA/KTH 2002
7
Exempel - Dataformat 2002-03-18 © Björn Hedin, NADA/KTH 2002
<?xml version="1.0"?> <imf> <head> <version>3.0</version> <source supplier="PrintingCompany-1" application="Application-1"/> <time> T00:11: </time> </head> <body> <object action="modify"> <PrintingJob/> <object_uid> <local_id>17</local_id> </object_uid> <attributes> <ActualCopies>14322</ActualCopies> </attributes> </object> </body> </imf> © Björn Hedin, NADA/KTH 2002
8
Element Ett element är den grundläggande informationsenheten i en xml-applikation. Ett element har en start-tag, ett innehåll och en slut-tag. Exempel <title> XML Lecture </title> Start-tag Innehåll Slut-tag © Björn Hedin, NADA/KTH 2002
9
Simple-, Complex- eller Empty content
Simple content - En tag innehåller endast text. Complext content - En tag innehåller en eller flera andra tags och eventuellt text. Empty content - En tag innehåller inget. Exempel <head> <title> XML Lecture </title> </head> <br></br> <br /> <head> har Complex Content <title> har Simple Content <br> har Empty Content Kortversion av <br></br> © Björn Hedin, NADA/KTH 2002
10
Attribut Attribut innehåller extra information om ett element
T.ex. width på bilder, href på länkar Skrivs på formen <elementnamn attributnamn1=”värde1” attributnamn2=”värde2”> Exempel <a href=”b.html”>Link</a> <img width=”14” src=’b.jpg’ /> Observera att det går att innesluta attributvärdet antingen ”värde” eller ’värde’, men inte ”värde’ eller ’värde”. © Björn Hedin, NADA/KTH 2002
11
Attribut eller element?
Då man själv gör ett märkspråk ställs man ofta inför valet att koda något som ett attribut eller ett element. Valet är huvudsakligen en smakfråga. Exempel <video duration=”2s” href=”b.jpg” /> Eller <video> <duration>2s</duration> <source>b.jpg</source> </video> © Björn Hedin, NADA/KTH 2002
12
Trädstruktur XML-strukturer bildar alltid en trädstruktur
Alla XML-strukturer har ett ”root-document” Exempel HTML <html> <head> <title> XML Lecture </title> </head> <body> </body> </html> root html head body title XML Lecture Tecken-data © Björn Hedin, NADA/KTH 2002
13
Föräldrar, barn, syskon Element som innehåller andra element kallas dessa elements förälder. Omvänd relation kallas barn. Element på samma nivå kallas syskon. Exempel HTML <html> <head> <title> XML Lecture </title> </head> <body> </body> </html> html head body title XML Lecture © Björn Hedin, NADA/KTH 2002
14
Reserverade tecken Vissa tecken är reserverade då de har speciell betydelse i XML. De kodas som ”entitetsreferenser”. Även svenska tecken kodas oftast som entitetsreferenser Exempel < < (less than) > > (greater than> & & (ampersand) ” " (quotation) ’ ' (apostrophe) Å Å Ä Ä Ö Ö å å ä ä ö ö © Björn Hedin, NADA/KTH 2002
15
CDATA och PCDATA PCDATA = Parsed Character Data. Parsern ersätter entitetsreferenser med deras värde. CDATA = Character Data. Entitetsreferenser tolkas ej. Exempel Om man har många ”konstiga” tecken som man av lathet eller något annat skäl vill skriva in utan entitetsreferenser kan man innesluta tecknen i en CDATA-sektion. Den inleds med strängen <![[ och avslutas med strängen ]]> <reserved_characters> <![CDATA[ <, > &, ’ och ” är alla reserverade tecken ]]> </reserved characters> © Björn Hedin, NADA/KTH 2002
16
Namngivning Namn på tags och attribut måste inledas med en bokstav eller ”_” Därefter bokstäver och/eller siffror. Svenska tecken OK men bör undvikas i praktiken ”xml” reserverat som inledning Godkända exempel <html> <_my_id_19> <dåligt_namn> <tag_with_xml> Felaktiga exempel <mitt element> <7nde_elementet> <Bjorn’s_tag> <xml_tag> © Björn Hedin, NADA/KTH 2002
17
Well-formed Ett xml-dokument är ”well formed” om det uppfyller ett antal kriterier. Alla xml-dokument måste vara well-formed. Exempel Varje start-tag måste ha en motsvarande slut-tag (<html></html>) Elementen måste bilda en trädstruktur (t.ex. <i><p></p></i> men EJ <i><p></i></p>) Attributvärden måste omslutas av citat-tecken eller apostrofer. Observera att många html-editorer inte uppfyller något av ovanstående krav. Fullständig lista i kapitel 18 av XML in a nutshell, något mer lättbegripligt på sid 23 i samma bok. © Björn Hedin, NADA/KTH 2002
18
Kommentarer Kommentarer omsluts med <!-- kommentar -->
Får EJ finnas i en tag. Får EJ innehålla strängen -- Godkänt exempel <html> <!-- min kommentar --> </html> Felaktiga exempel <html <!-- en html-tag -->> <!-- -- är ej tillåtet --> © Björn Hedin, NADA/KTH 2002
19
Processinstruktioner
Processinstruktioner kan användas för att skicka vidare information till applikationer. Många applikationer har tidigare använt kommentarer i samma syfte, vilket är dåligt. Exempel <?xml-stylesheet type=”text/xml” href=”my-stylesheet.xsl”?> Denna processinstruktion kan sedan plockas upp exempelvis av en webserver som kan använda informationen till att styra sitt beteende. Processinstruktioner inleds med <? Och avslutas med ?> © Björn Hedin, NADA/KTH 2002
20
XML-deklarationer XML-dokument bör inledas med en XML-deklaration. Den innehåller: XML-version Teckenkodning Om en extern dtd används Exempel <?xml version=”1.0” encoding=”ISO-8859_1” standalone=”yes”?> Teckenkodning (t.ex. ascii, iso-8859_1 eller unicode kan väljas med ”encoding”) standalone=”no” används om en extern DTD finns. Förklaring av DTD kommer senare. © Björn Hedin, NADA/KTH 2002
21
Dokumenttypdeklaration
XML-dokument kan även innehålla en Document Type Declaration som anger en eventuell DTD. Exempel <!DOCTYPE imf SYSTEM ” imf är i ovanstående fall root-elementet SYSTEM används om det inte är en ”officiell” DTD, annars används PUBLIC URLen är urlen till DTDn Kan även innehålla en så kallad ”public ID”, t.ex. ”-//W3C//DTD XHTML 1.0 Transitional//EN" © Björn Hedin, NADA/KTH 2002
22
Tag-set Tags och deras attribut för ett visst område kallas ”tag-set”, ”xml application” eller ”xml vocabulary”. Exempel <br> ingår i den tag-set som finns för xhtml men inte för SVG <apply-templates> ingår i den tag-set som finns för xsl men inte för xhtml <p> ingår i både xhtml’s tag-set och wml’s tag-set. © Björn Hedin, NADA/KTH 2002
23
DTD I en Document Type Definition (DTD) definierar man en tag-set och de inbördes relationer som ska gälla. Samma sak kan idag göras med t.ex. XML Schemas. Exempel <html>, <head> och <body> är alla definierade i DTDn för XHTML. I den DTDn anges att ett <head>-element ska innehålla exakt et <head>-element följt av exakt ett <body>element. Detta uttrycks genom följande rad i DTDn <!ELEMENT html (head, body)> © Björn Hedin, NADA/KTH 2002
24
Valid Om ett XML-dokument är well-formed och uppfyller alla de begränsningar som ges av dess DTD är det ”valid”. Processen att kontrollera detta kallas ”validering” Exempel xhtml-dokument kan valideras på En generell valideringstjänst som klarar andra vokabulärer än xhtml finns på XML Schemas kan valideras på © Björn Hedin, NADA/KTH 2002
25
DTD - Element Element definieras enligt syntaxen
<!ELEMENT elementnamn (barnelement) > Sekvenser separeras med kommatecken <!ELEMENT e1 (e3,e4) > Teckendata skrivs #PCDATA <!ELEMENT e4 (#PCDATA) > Exempel <!ELEMENT html (head,body)> <!ELEMENT title (#PCDATA)> © Björn Hedin, NADA/KTH 2002
26
DTD - Repeterande element
Default är att ett element förekommer exakt en gång. Vill man ange något annat finns *, + och ? OBS!! Fel på sidan 35 i boken, korrekt till höger. Exempel * betyder 0, 1 eller flera gånger + betyder 1 eller flera gånger ? betyder 0 eller 1 gång Instansdokument <a> <b> <c> <d>hej</d> </c> </b> </a> Definition <!ELEMENT a (b?)> <!ELEMENT b (c+))> <!ELEMENT c (d*))> <!ELEMENT d (#PCDATA)> © Björn Hedin, NADA/KTH 2002
27
DTD - Grupperingar Parenteser kan användas för att gruppera element. Sedan kan *, + och ? appliceras på hela parentesen som en grupp. Exempel <!ELEMENT a (b,(c+,d?)*)+> © Björn Hedin, NADA/KTH 2002
28
DTD - Val För att ange valmöjlighet mellan en mängd element kan operatorn | användas. Exempel <!ELEMENT boolean (true|false)> © Björn Hedin, NADA/KTH 2002
29
DTD - Tomma element Tomma element, alltså element utan innehåll deklareras med EMPTY Exempel <!ELEMENT br EMPTY> © Björn Hedin, NADA/KTH 2002
30
DTD - Blandat innehåll I vissa fall är det önsvärt att kunna blanda teckendata med element. Typexemplet är web. #PCDATA måste vara först i en val-lista. Exempel Deklaration <!ELEMENT mixedelement (#PCDATA| p|br|em|strong)*> Instansdokument <mixedelement> <em>hej</em> hopp <p>tjoho</p> </mixedelement> © Björn Hedin, NADA/KTH 2002
31
DTD - Godtyckligt innehåll
Ibland (mycket sällan) är det önskvärt att deklarera ett element som kan ha godtyckligt innehåll. Det görs med ANY. Exempel <!ELEMENT everything ANY> Elementet everything kan nu innehålla godtycklig well-formed xml och text blandat. © Björn Hedin, NADA/KTH 2002
32
DTD - Övningar Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): <!ELEMENT a (b,c?)> <!ELEMENT b (d+, e*)> <!ELEMENT c (#PCDATA)> <!ELEMENT d EMPTY> <!ELEMENT e (#PCDATA)> © Björn Hedin, NADA/KTH 2002
33
DTD - Övningar Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): <!ELEMENT a (b|c)+,(c,b)+)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> © Björn Hedin, NADA/KTH 2002
34
DTD - Övningar Skriv en DTD som kan validera följande instansdokument.
<b/> <c/> <d> </d> </a> © Björn Hedin, NADA/KTH 2002
35
DTD - Attribut Ett eller flera attribut kan associeras med ett element. Ett attributnamn kan förekomma i flera element, men ett element kan inte ha två attribut med samma namn Exempel <!ATTLIST img src CDATA #REQUIRED width CDATA #REQUIRED height CDATA #IMPLIED> img är elementet attributen ska associeras med. src, width, height är attributnamn CDATA är attributens datatyp #REQUIRED betyder att attributet måste finnas med, #IMPLIED att det kan finnas med © Björn Hedin, NADA/KTH 2002
36
Attribut - Datatyper CDATA - Minst begränsade datatypen. NMTOKEN - Alfanumeriska tecken, _, -, . och :. Inte mellanslag. NMTOKENS - En eller flera NMTOKEN separerade av mellanslag (whitespace) Enumerations - Endast ett av en enumerering värden kan antagas. Definieras exempelvis <!ATTLIST book published (true|false) #REQUIRED> ID - Unika värden inom XML-dokumentet. Som NMTOKEN men kan inte inledas med en siffra IDREF - Används för interna länkar till attribut av ID-typ. Måste alltså antaga ett värde som ett ID-attribut har. IDREFS - En eller flera IDREF Mycket begränsade ”datatyper” finns. De viktigaste är: CDATA NMTOKEN NMTOKENS ENUMERATIONS ID IDREF IDREFS © Björn Hedin, NADA/KTH 2002
37
Entitetsdeklartioner
Exempel I en DTD <!ENTITY mtgp ”Medieteknik och Grafisk Produktion”> I ett instansdokument som använder den DTDn <p>Kursen ges av &mtgp;</p> Slutresultat <p>Kursen ges av Medieteknik och Grafisk Produktion </p> I #PCDATA-sektioner går parsern igenom texten och ersätter entiteter med dess värden. Entitetsdeklarationer kan användas för att ”skapa alias” för långa eller svåra strängar. Deklareras i en DTD, används i instansdokumenten. © Björn Hedin, NADA/KTH 2002
38
Parameterentiteter Entitetsdeklarationer skrivs i en DTD och används i instansdokument. Parameterdeklarationer både skrivs och används i DTDer. Exempel <!ELEMENT person (fname, lname)> <!ELEMENT employee (fname, lname)> <!ELEMENT student (fname, lname)> Istället kan man deklarera en parameterentitet <!ENTITY % name ”fname, lname”> <!ELEMENT person (%name;)> <!ELEMENT employee (%name;)> <!ELEMENT student (%name;)> © Björn Hedin, NADA/KTH 2002
39
Interna/Externa DTDer
Exempel extern DTD Filen student.dtd <!ELEMENT student (fname, lname)> <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> Filen student.xml (instansdokumentet) <?XML version=”1.0”?> <!DOCTYPE student SYSTEM ”student.dtd”> <person> <fname>Bjorn</fname> <lname>Hedin</lname> </person> Vanligtvis ligger DTD-deklarationerna i en extern fil. © Björn Hedin, NADA/KTH 2002
40
Interna/Externa DTDer
Det går dock även att inkludera deklarationerna i själva instansdokumentet. Exempel intern DTD <?XML version=”1.0”?> <!DOCTYPE student [ <!ELEMENT student (fname, lname)> <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> ]> <person> <fname>Bjorn</fname> <lname>Hedin</lname> </person> © Björn Hedin, NADA/KTH 2002
41
Problem med DTDer Begränsade datatyper (inga int, long, date…)
Begränsade repetitionsalternativ (endast ?, * och +) Endast en betydelse för ett element per DTD DTDer är själva inte XML-dokument. Inga möjligheter till ”arvsmekanismer”. Försök till lösning med XML Schemas, men mer om det nästa gång. © Björn Hedin, NADA/KTH 2002
42
Unix Ett operativsystem, precis som Windows och MacOS
Linux, Solaris, Mac OS X m.fl. Unixsystem finns Från början designad för att flera användare ska kunna köra program samtidigt på samma dator. Mycket stabilt. Används ofta för serverapplikationer, såsom webserver, mailserver, filserver. Första implementationen 1969 © Björn Hedin, NADA/KTH 2002
43
GUI/Textgränssnitt Både grafiska gränssnitt och textbaserade gränssnitt finns. Jfr Windows och DOS-prompt Textbaserade gränssnitt speciellt användbara vid fjärrinloggning på system. Enkelt att skriva ”script” som utför en mängd olika kommandon. © Björn Hedin, NADA/KTH 2002
44
Grundläggande begrepp
Shell Ett ”shell” är en kommandotolk. För att exekvera ett program skriver du in programmets namn i tolken, vilken tolkar kommandot och därpå exekverar det. Process Ett program som exekveras är en process. Processen innehåller information om öppna filer, variabler mm. © Björn Hedin, NADA/KTH 2002
45
Filosofi Unix har en liten del (”kernel”) som sköter om det viktigast, såsom minneshantering, resursallokering, filhantering och felhantering. Övriga delar, t.ex. ls, kommandot för att lista filer, är ett eget program som kan bytas ut om man så önskar Många småprogram kan kombineras ihop till att utföra komplexa uppgifter. jfr MS/DOS, Windows m.fl. där ”allt” är integrerat. Lättare att skriva ett litet program som hanterar en liten uppgift bra och effektivt än att skriva ett stort program som hanterar många uppgifter. © Björn Hedin, NADA/KTH 2002
46
Shell Ett shell är som sagts tidigare en kommandotolk.
Kan, förutom dess viktigaste uppgift att starta processer, även hantera variabler, if/then/else-konstruktioner, loopar etc. Det första man möts av när man loggar in via en textterminal är ett shell. Alla program man utför är ”barnprocesser” till detta shell. Om inloggningsskalet avslutas, avslutas normalt sett även dess barnprocesser. Kommandon kan utföras ”batchvis” i ett shellscript. © Björn Hedin, NADA/KTH 2002
47
Shell-cykeln Shell T.ex. ls Skriv ut en prompt
Läs ett kommando från tangentbordet Tolka speciella tecken såsom variabler Kör kommandot och vänta tills det avslutas Börja om från början T.ex. ls exekvera programmet ls Skriv ut ev. resultat Återgå till skalet © Björn Hedin, NADA/KTH 2002
48
Generell kommandosyntax
Den generella formen för hur ett kommando ges är: >kommandonamn -flaggor argument Obs. Det inledande >-tecknet är själva kommandoprompten, och kan variera. Exempel >cp -R mapp1 mapp2 © Björn Hedin, NADA/KTH 2002
49
Hjälp Exempel För att få hjälp finns t.ex. två hjälpsystem (ofta).
De flesta kommandon accepterar flaggan --help för kortfattad beskrivning av de flaggor och argument som kan ges. Klamrar [] anger att något ej är nödvändigt. Vertikalstreck | används för att ange val mellan två alternativ. Exempel >cp --help usage: cp [-R [-H | -L | -P]] [-f | -i] [-p] src target cp [-R [-H | -L | -P]] [-f | -i] [-p] src1 ... srcN directory > © Björn Hedin, NADA/KTH 2002
50
Man-blad För mer utförlig hjälp kan man ange kommandot
>man kommandonamn Dessa manualblad är oftast tämligen svårtydda om man inte är van. media>man cp CP(1) System Reference Manual CP(1) NAME cp - copy files SYNOPSIS cp [-R [-H | -L | -P]] [-f | -i] [-p] source_file target_file cp [-R [-H | -L | -P]] [-f | -i] [-p] source_file ... target_directory DESCRIPTION In the first synopsis form, the cp utility copies the contents of the source_file to the target_file. In the second synopsis form, the contents of each named source_file is copied to the destination target_directory. The names of the files themselves are not changed. If cp detects an at- tempt to copy a file to itself, the copy will fail. The following options are available: -H If the -R option is specified, symbolic links on the command line © Björn Hedin, NADA/KTH 2002
51
Filsystemet © Björn Hedin, NADA/KTH 2002
52
Sökvägar Det finns åtminstone tre sätt att ange sökvägar.
Antag att du står i katalogen kalle och vill komma åt programmet ls under bin-katalogen under bjornh Absolut sökväg /home/bjornh/bin/ls Relativ sökväg ../bjornh/bin/ls Relativt användaren bjornh ~bjornh/bin/ls © Björn Hedin, NADA/KTH 2002
53
Filrättigheter En fil har tre ägartyper
Ägarnivå Gruppnivå Samtliga användare För ägartyp kan tre rättigheter ges Läsrättighet (r) Skrivrättighet (w) Exekveringsrättighet (x) © Björn Hedin, NADA/KTH 2002
54
Filrättigheter (2) Vilka filrättigheter en fil har kan ses med kommandot ls -l >ls -l afmstud01.xls -rw-r--r-- 1 bjornh staff Jan 9 11:12 afmstud01.xls media> De första tio tecknen anger rättigheterna. I tur och ordning: -: afmstun01.xls är en fil, inte en katalog (i så fall “d”) rw-: Ägaren (bjornh) har läs- och skrivrättigheter, men inte exekveringsrättigheter r--: Gruppen har läsrättigheter, men inte skriv- eller exekveringsrättigheter r--: “Samtliga användare” har läsrättigheter, men inte skriv- eller exekveringsrättigheter För att ändra filrättigheter används kommandot chmod (se labb) © Björn Hedin, NADA/KTH 2002
55
stdin, stdout och stderr
Program har standardvärden för varifrån de läser input och skriver output. Program tar normalt sitt input via tangentbordet (stdin) De skriver output till skärmen (stdout) De skriver felmeddelanden tilll skärmen (stderr) Dessa kan omdirigeras till/från t.ex. en fil. >cat fil1 >fil2 Skriver innehållet som finns i fil1 till fil2 >cat filnamn >>fil2 “Appendar” fil1 till fil2 Se mer på laborationen © Björn Hedin, NADA/KTH 2002
56
pipes Output kan även skickas vidare och bli input till ett annat program. Det kallas för en “pipe”. >ls | grep banan | wc Listar alla filer i katalogen. Output skickas vidare till programmet grep som plockar ut alla rader som innehåller strängen banan. Output från detta (alla rader innehållande strängen banan) skickas vidare till programmet wc (word count) som räknar antalet rader. Med omdirigeringar hade samma sak kunnat uppnås (första “>”-tecknet är kommandoprompten). >ls >a >grep banan a >b >wc b © Björn Hedin, NADA/KTH 2002
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.