HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidat nr: Eksamensdato: 11. desember 2002 Varighet: 3 timer (9:00 12:00) Fagnummer: LO515D Fagnavn: Klasser: NETT2002H Studiepoeng: 6 Faglærere: tlf 73 55 95 61 Hjelpemidler: Ingen Oppgavesettet består av: 2 oppgaver og 12 sider (medregnet denne forsiden og 2 vedlegg) Vedlegg består av: 8 sider Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. NB! Les hele oppgaveteksten før du setter i gang, og planlegg tiden. Dersom noe virker uklart i denne oppgaven, må du selv gjøre antagelser og få med disse antagelsene i besvarelsen. Lykke til!
HiST - Avdeling for informatikk og e-læring Side 2 av 12 Oppgave 1 Teori (30 %) a) Hvilke behov dekker XML som HTML ikke dekker? Gi en kort begrunnelse. b) Hva er fordelen med å gjøre et XML-dokument lovlig? Nevn minst tre fordeler som du mener er de viktigste. c) Forklar kort hva DOM brukes til? Gi et lite eksempel. Oppgave 2 Land (70 %) I vedlegg 1 ligger det et XML-dokument, land.xml. Dette XML-dokumentet inneholder informasjon om utvalgte land fra hele verden. Du skal bruke dette XML-dokumentet i hele oppgave 2. Hvis du i noen av deloppgavene forutsetter bruk av en bestemt browser, må du skrive hvilken du forutsetter (vi antar at siste versjon alltid brukes). a) Lag et stilark slik at dataene blir seende omtrent ut som på figuren under (i en browser). Navn og hovedstad er med uthevet skrift, mens befolkningstall er i kursiv. Navn har også en større skrift og skal være blå.
HiST - Avdeling for informatikk og e-læring Side 3 av 12 b) Vis presentasjonen av alle landene som på figuren under. Få med nummerering og sortering. Navn skal skrives med uthevet skrift.
HiST - Avdeling for informatikk og e-læring Side 4 av 12 c) Her følger koden til en HTML-side som bruker databinding. Skisser hvordan denne siden vil se ut i Internet Explorer? <HTML> <HEAD> <TITLE>Oversikt over lander</title> </HEAD> <BODY> <XML ID="land" SRC="land.xml"></XML> <H2>Oversikt over land</h2> <TABLE ID="landtabell" DATASRC="#land" BORDER="1" DATAPAGESIZE="3" CELLPADDING="5"> <thead style="font:20pt; font-weight:'bold'"> <td>land</td> <td>befolkning</td> </thead> <TR ALIGN="left"> <TD>Land: <SPAN DATAFLD="NAVN" STYLE="font:18pt"></SPAN><BR> Hovedstad: <SPAN DATAFLD="HOVEDSTAD" STYLE="font:18pt"/></TD> <TD><SPAN DATAFLD="BEFOLKNING"></SPAN> mill</td> </TR> </TABLE> <BUTTON ONCLICK="landtabell.firstPage()">Første side</button> <BUTTON ONCLICK="landtabell.previousPage()">Forrige side</button> <BUTTON ONCLICK="landtabell.nextPage()">Neste side</button> <BUTTON ONCLICK="landtabell.lastPage()">Siste side</button> </BODY> </HTML> d) Lag et XML-skjema som gjør land.xml gyldig. I tillegg til det som allerede er gitt i XMLdokumentet, skal du legge til attributtet verdensdel til hvert LAND-element. Dette attributtet skal fortelle hvilken verdensdel vært enkelt land ligger i (Europa, Nord- Amerika, Sør-Amerika, Afrika, Asia, Oceania). Attributtet skal bare kunne ha disse 6 verdiene, og hvis attributtet ikke er oppgitt i XML-dokumentet skal det ha standardverdien ukjent.
HiST - Avdeling for informatikk og e-læring Side 5 av 12 Vedlegg 1 filen land.xml <?xml version="1.0"?> <!-- Oversikt over noen land i verden --> <!-- Kilde: http://www.cia.gov/cia/publications/factbook/ --> <!-- Befolkningstall i hele millioner --> <VERDEN> <NAVN>Italia</NAVN> <HOVEDSTAD>Roma</HOVEDSTAD> <BEFOLKNING>57.7</BEFOLKNING> <NAVN>Mexico</NAVN> <HOVEDSTAD>Mexico City</HOVEDSTAD> <BEFOLKNING>103.4</BEFOLKNING> <NAVN>Chile</NAVN> <HOVEDSTAD>Santiago</HOVEDSTAD> <BEFOLKNING>15.5</BEFOLKNING> <NAVN>Polen</NAVN> <HOVEDSTAD>Warzawa</HOVEDSTAD> <BEFOLKNING>38.6</BEFOLKNING> <NAVN>India</NAVN> <HOVEDSTAD>New Dehli</HOVEDSTAD> <BEFOLKNING>1045.8</BEFOLKNING> <NAVN>Norge</NAVN> <HOVEDSTAD>Oslo</HOVEDSTAD> <BEFOLKNING>4.5</BEFOLKNING> <NAVN>Mongolia</NAVN> <HOVEDSTAD>Ulan Bator</HOVEDSTAD> <BEFOLKNING>2.7</BEFOLKNING> <NAVN>New Zealand</NAVN> <HOVEDSTAD>Wellington</HOVEDSTAD> <BEFOLKNING>3.9</BEFOLKNING> <NAVN>Sudan</NAVN> <HOVEDSTAD>Kharatoum</HOVEDSTAD> <BEFOLKNING>37.1</BEFOLKNING>
HiST - Avdeling for informatikk og e-læring Side 6 av 12 <NAVN>Argentina</NAVN> <HOVEDSTAD>Buenos Aires</HOVEDSTAD> <BEFOLKNING>37.8</BEFOLKNING> <NAVN>Zambia</NAVN> <HOVEDSTAD>Lusaka</HOVEDSTAD> <BEFOLKNING>10</BEFOLKNING> <NAVN>Japan</NAVN> <HOVEDSTAD>Tokyo</HOVEDSTAD> <BEFOLKNING>127</BEFOLKNING> </VERDEN>
HiST - Avdeling for informatikk og e-læring Side 7 av 12 Vedlegg 2 - huskeliste Navnerom <tag xmlns:prefiks= uri > ]]> <SAMLING xmlns:bok= http://www.mjyonline.com/b ooks > Navn Skrivemåte Eksempel Prosessorinstruksjon <?program <?xml version= 1.0?> kommando?> Kommentar <!--kommentaren --> <!--Her er en kommentar --> CData-seksjon <![CDATA[innhold]]> <![CDATA[Vi skriver <TAG> og </TAG> bruk i tagg <prefiks:tag> <bok:tittel> Dokumenttypedefinisjon [innhold]> > <!ELEMENT >.]> <!DOCTYPE tag <!DOCTYPE INVENTORY [<!ELEMENT <!DOCTYPE tag <!DOCTYPE INVENTORY SYSTEM SYSTEM fil> inventory.dtd > Innhold i DTD en <!ELEMENT navn elementspesifikator> <!ELEMENT INVENTORY (BOOK)*> <!ATTLIST element <!ATTLIST AUTHOR Born CDATA navn attributt-type #implied> standardverdi> Entitetsdeklarasjon Entitetsreferanse Tegnreferanse Bruk av XSLT xsl:template <xsl:template match= Xpathuttrykk > <xsl:apply-templates select= Xpathuttrykk > xsl:applytemplates <!ENTITY navn entitetsdeklarasjon> <!ENTITY % navn entitetsdeklarasjon> <!ENTITY navn entitetsdeklarasjon NDATA notasjonsnavn> <!NOTATION navn SYSTEM systembeskrivelse> tekst SYSTEM filnavn &entitetsnavn; %entitetsnavn; & < > ' " <xsl:navn attributt= verdi > <!ENTITY hard hardcover > <!ENTITY % book_decl SYSTEM Book.dtd > <!ENTITY faun SYSTEM Faun.gif NDATA GIF> <!NOTATION GIF SYSTEM ShowGif.exe > hardcover SYSTEM Book.dtd &hard; %book_decl; Vi skriver <TAG> og </TAG> <xsl:stylesheet version= 1.0 xmlns:xsl= http://www.w3.org/1999/xsl/ Transform > <xsl:template match= / > <xsl:apply-templates select= INVENTORY/BOOK >
HiST - Avdeling for informatikk og e-læring Side 8 av 12 xsl:value-of xsl:for-each xsl:if xsl:choose xsl:when <xsl:value-of select= Xpathuttrykk > <xsl:for-each select= Xpathuttrykk > <xsl:if test= booleanuttrykk > <xsl:choose>en flere xsl:when-setninger eventuelt xsl:otherwisesetning <xsl:when test= boolean-uttrykk > <xsl:value-of select= BOOK > <xsl:for-each select=. > <xsl:if test= @InStock= no > <xsl:choose> xsl:otherwise <xsl:otherwise> <xsl:otherwise> xsl:sort <xsl:sort select= Xpathuttrykk datatype= text number order= ascending desce nding > Xpath-uttrykk Xpath-funksjon / //... element @attributt Xpathfunksjon [filter] position() count() last() boolean(noe) not(boolsk uttrykk) string(noe) string-length(noe) substring(noe, start, antall) number(noe) round(tall) sum(nodesett) + - * div mod <xsl:when test= PAGES <=300> <xsl:sort select= LASTNAME datatype= text order= ascending >../NAME[@Born>=1900] <xsl:apply-templates select="autoads/ad[position() mod 2 = 1]" /> <xsl:value-of select="count(ad)"/> <xsl:value-of select="sum(ad/price)"/> <xsl:value-of select="round(sum(ad/price) div count(ad))"/> filter Xpath-uttrykk reloperator COUNTRY = NORWAY verdi Rel-operator =!= < > <= >= @Born < 1900 MS databinding <XML ID= data-øy SRC= fil > <XML ID="cdarkiv" SRC="cd_catalog.xml"> Knytte data-øy til <TABLE tabell DATASRC= #data-øy Knytte XMLelement til HTML-element > <HTML-tag DATAFLD= element > <HTML-tag DATASRC=#data-øy DATAFLD= element > <TABLE DATASRC="#cdarkiv" BORDER="1" CELLPADDING="5"> <SPAN DATAFLD="TITLE"> <A DATASRC="#bokarkiv" DATAFLD="BAKGRUNNSTOFF">
HiST - Avdeling for informatikk og e-læring Side 9 av 12 DOMnodetypene Felles nodeegenskaper Felles nodemetoder Skjema xsd:element Attributter til xsd:element xsd:attribute Document, DocumentFragment, DocumentType, EntityReference, Element, Attr, ProcessingInstruction, Comment, Text, CDATASection, Entity, Notation nodename, nodevalue, nodetype, parentnode, childnodes, firstchild, lastchild, previoussibling, nextsibling, attributes, ownerdocument insertbefore(), replacechild(), removechild(), appendchild(), haschildnodes(), clonenode() <xsd:schema attributt= verdi > <xsd:element attributt= verdi > name, type, minoccurs, maxoccurs, <xsd:attribute attributt= verdi > Sett type <xsd:simpletype compl extype> Innholdsmod xsd:sequence xsd:choice xsd:all xsd:restriction <xsd:restriction base= datatype > flere andre elementtyper Andre xsd:minexclusive elementtyper xsd:maxexclusive xsd:mininclusive xsd:maxinclusive xsd:enumeration tekst=node.nodevalue NodeList nodeliste=node.getchildnodes(); <xsd:schema xmlns:xsd= http://www.w3.org/2001/xml Schema > <xsd:element name= NAME > <xsd:element name= NAME minoccurs= 2 > <xsd:attribute name= personnr type= xsd:positiveinteger use= required > <xsd:simpletype> <xsd:sequence> <xsd:restriction base= xsd:string > <xsd:minexclusive value= 15000 > <xsd:pattern value= \d{5} > xsd:pattern datatyper type= xsd:datatype <xsd:element name= FORNAVN type= xsd:string >
HiST - Avdeling for informatikk og e-læring Side 10 av 12 Schema Datatyper Examples (delimited by commas) string En tekst, tekst med 2 tall byte -1, 126 unsignedbyte 0, 126 base64binary GpM7 hexbinary 0FB7 integer -126789, -1, 0, 1, 126789 positiveinteger 1, 126789 negativeinteger -126789, -1 nonnegativeinteger 0, 1, 126789 nonpositiveinteger -126789, -1, 0 int -1, 126789675 unsignedint 0, 1267896754 long -1, 12678967543233 unsignedlong 0, 12678967543233 short -1, 12678 unsignedshort 0, 12678 decimal -1.23, 0, 123.4, 1000.00 float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN double -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN boolean true, false 1, 0 time 13:20:00.000, 13:20:00.000-05:00 datetime 1999-05-31T13:20:00.000-05:00 duration P1Y2M3DT10H30M12.3S date 1999-05-31 gmonth --05-- gyear 1999 gyearmonth 1999-02 gday ---31 gmonthday --05-31 HTML Navn Beskrivelse A anchor ABBR abbreviated form (e.g., WWW, HTTP, etc.) ADDRESS information on author APPLET Java applet B bold text style BODY document body BR forced line break BUTTON push button CAPTION table caption CENTER shorthand for DIV align=center COL table column DT definition term FONT local change to font FRAME subwindow FRAMESET window subdivision H1 til H6 heading
HiST - Avdeling for informatikk og e-læring Side 11 av 12 HEAD document head HR horizontal rule HTML document root element KBD text to be entered by the user LABEL form field label text LINK a media-independent link MENU menu list META generic metainformation OBJECT generic embedded object P paragraph SCRIPT script statements SELECT option selector SMALL small text style SPAN generic language/style container STYLE style info SUB subscript TABLE table TD table data cell TH table header cell THEAD table header TITLE document title TR table row U underlined text style UL unordered list CSS Tag{ egenskap: verdi } PERSON{ font-size: 14pt } Egenskap Verdi font-family [[<family-name> <generic-family>],]* [<family-name> <generic-family>] font-style normal italic oblique font-variant normal small-caps font-weight normal bold bolder lighter 100 200 300 400 500 600 700 800 900 font-size <absolute-size> <relative-size> <length> <percentage> font [ <font-style> <font-variant> <fontweight> ]? <font-size> [ / <line-height> ]? <font-family> color <color> background-color <color> transparent background-image <url> none background-repeat repeat repeat-x repeat-y no-repeat background-position [<percentage> <length>]{1,2} [top center bottom] [left center right] background <background-color> <backgroundimage> <background-repeat> <background-attachment> <background-position> word-spacing normal <length> letter-spacing normal <length> text-decoration none [ underline overline linethrough blink ]
HiST - Avdeling for informatikk og e-læring Side 12 av 12 vertical-align baseline sub super top text-top middle bottom text-bottom <percentage> text-transform capitalize uppercase lowercase none text-align left right center justify text-indent <length> <percentage> line-height normal <number> <length> <percentage> margin-top margin-right margin-bottom margin-left margin [ ]{1,4} padding-top <length> <percentage> padding-right <length> <percentage> padding-bottom <length> <percentage> padding-left <length> <percentage> padding [ <length> <percentage> ]{1,4} border-width [thin medium thick <length>]{1,4} border-color <color>{1,4} border-style none dotted dashed solid double groove ridge inset outset border-top <border-top-width> <border-style> <color> border-right <border-right-width> <border-style> <color> border-bottom <border-bottom-width> <border-style> <color> border-left <border-left-width> <border-style> <color> border <border-width> <border-style> <color> float left right none clear none left right both display block inline list-item none white-space normal pre nowrap list-style-type disc circle square decimal lowerroman upper-roman lower-alpha upper-alpha none list-style-image <url> none list-style-position inside outside list-style <keyword> <position> <url> position absolute relative static left top width height z-index auto <integer> page-break-before auto allways left right page-break-after auto allways left right size <length>{1,2} auto portrait landscape