320 likes | 460 Views
CLT132. Lyhyt johdanto XML:ään + vihjeitä asioiden jatko-opiskeluun (viikko 12). Clt132-kurssin sisältö ja XML. Nämä asiat eivät kuulu kurssin sisältöön, eikä niitä oleteta hallittavan kurssin päätteeksi
E N D
CLT132 Lyhyt johdanto XML:ään + vihjeitä asioiden jatko-opiskeluun (viikko 12)
Clt132-kurssin sisältö ja XML • Nämä asiat eivät kuulu kurssin sisältöön, eikä niitä oleteta hallittavan kurssin päätteeksi • Asiat ovat kuitenkin hyvää pohjatietoa niille (tod.näk. useille) opiskelijoille, jotka jatkavat rakenteisten dokumenttien parissa XML-kurssilla • Pätevää tietoa myös “tietoteknisen yleissivistyksen” näkökulmasta CLT132 – kevät 2008 Sauli Nurmi
XML • XML = eXtensible Markup Language • XML on SGML-johdannainen, samoin kuin esim. HTML, mutta paljon laajempi • Perusperiaate on sama kuin kaikissa markup-kielissä, käytännön tason toiminta luonnollisesti hieman toisenlainen CLT132 – kevät 2008 Sauli Nurmi
XML, jatkoa • XML:ää ei käytetä suoraan esityskielenä, kuten (X)HTML:ää • Perusperiaate on tiedon rakenteinen tallentaminen, josta voidaan tietenkin johtaa tiedon rakenteinen esittäminen • XML -> HTML –konversiot yms. CLT132 – kevät 2008 Sauli Nurmi
Lisätietoa XML:stä • Maailma on XML-tietoa tulvillaan • Seuraava materiaali on (…ollut, ehkä on myös tulevaisuudessa…) käytössä Yleisen kielitieteen laitoksen XML-kurssilla: http://www.ling.helsinki.fi/kit/2003s/ctl230/xml/xmlintro/ CLT132 – kevät 2008 Sauli Nurmi
What is XML? • “XML, or Extensible Markup Language, is a markup language that you can use to create your own tags. It was created by the World Wide Web Consortium (W3C) to overcome the limitations of HTML, the Hypertext Markup Language that is the basis for all Web pages. Like HTML, XML is based on SGML -- Standard Generalized Markup Language. Although SGML has been used in the publishing industry for decades, its perceived complexity intimidated many people that otherwise might have used it (SGML also stands for "Sounds great, maybe later"). XML was designed with the Web in mind.” http://www.ling.helsinki.fi/kit/2003s/ctl230/xml/xmlintro/xmlintro-2-1.html CLT132 – kevät 2008 Sauli Nurmi
Käsitteitä: XML • Extesible Markup Language • Kuten edellä kuvattu... • Lisäksi on mainittava XML:n muotovaatimukset, eli XML:n olisi oltava aina virheetöntä • XML-tekniikoita käytetään nykyään laajalti tiedon tallentamisessa • Vrt. esim. *.doc –tiedostot Office 97-2003:ssa, ja *.docx –tiedostot Office 2007:ssä CLT132 – kevät 2008 Sauli Nurmi
Käsitteitä: DTD • Document Type Definition • Tämä onkin vanha tuttu jo HTML/XHTML:n puolelta • Erona on nyt se, että siinä missä HTML:n kanssa joku on määritellyt nämä puolestamme, nyt määrittelemme nämä itse! • Mitä hyötyä? • Voidaan luoda dokumenteista sellaisia kuin niiden tarvitsee olla, käyttää mallia formaattina useille dokumenteille (esim. XML-tietokanta) CLT132 – kevät 2008 Sauli Nurmi
Käsitteitä: XSD • XML Schema Definition • Määrittelee minkälaisia elementtejä määritellyt elementit ovat • Toisin sanoen, toisaalla on määritelty elementti, ja XSD:ssä voidaan kertoa, että elementin sisällöksi hyväksytään esim. vain integer-muotoisia numeraaleja • Jos siitä on apua, voi ajatella tämän olevan jollain tapaa analoginen esim. tietokantojen input-maskin kanssa... CLT132 – kevät 2008 Sauli Nurmi
Käsitteitä: XSLT • Extensible Stylesheet Language Transformations • XSL = Extensible Stylesheet Language • Tämä tarkoittaa muutosta tiedostosta tai tiedostotyypistä toiseen • Tämä EI ole verrattavissa esim. CSS-tyylitiedostotekniikkaan suoraan, sillä nyt ei välttämättä muotoilla näkyvää ulkoasua • Idea silti sama: erotetaan data ja sen muotoilu CLT132 – kevät 2008 Sauli Nurmi
Koodin kirjoittaminen/toiminta • Toisin kuin tällä kurssilla käsitellyissä kielissä, XML:ssä ei (pääsääntöisesti/lähtökohtaisesti) ole vakiintunutta elementtien joukkoa • Elementit luodaan siis mielivaltaisesti (mutta toivon mukaan systemaattisesti/ konsistenttisesti) kuhunkin käyttötarpeeseen • Samat säännöt pätevät kuin XHTML:ssä: avonaiset elementit suljettava, oikeassa järjestyksessä CLT132 – kevät 2008 Sauli Nurmi
Mallikoodi <?xml version="1.0" ?> <clt132> <hyvaksytyt> <opiskelija>Matti Mainio</opiskelija> <opiskelija>Jussi Juonio</opiskelija> </hyvaksytyt> <hylatyt> <opiskelija>Aku Ankka</opiskelija> <opiskelija>Pelle Peloton</opiskelija> </hylatyt> </clt132> CLT132 – kevät 2008 Sauli Nurmi
Edellisen selitys • Tähän mennessä opitun perusteella edellisen esimerkin lukeminen ei liene liian vaikeaa • Sisäkkäiset elementit • Alku- ja lopputagit • Varsinainen tieto sitä ohjaavien tagien sisällä • Uutta on sen sijaan se, että olemme mielivaltaisesti luoneet kurssia varten elementit • HTML:ssä tämä ei olisi ikinä mahdollista, tuntemattomat elementit jätettäisiin tulkitsematta, niiden välinen tieto näytettäisiin selaimen (tai tyylimäärityksen) oletusulkoasulla CLT132 – kevät 2008 Sauli Nurmi
Edellisen selitys, jatkoa XML:ssä tämä on kuitenkin sallittua, oletettua, suositeltavaa ja oikeastaan ainoa mahdollinen tapa järkevästi hyödyntää kielen toimintaa Esimerkki voisi hyvinkin olla ristiriidassa tietyssä järjestelmässä käytetyn XML:n DTD:n tai muun määrittelevän tekijän kanssa, mutta määrittelemällä järjestelmän kaikki osat soveltuviksi, esimerkki on täysin mahdollinen Negaationa siis: ei ole mitään universaalia määritelmää, jota esitetty esimerkki rikkoisi CLT132 – kevät 2008 Sauli Nurmi
Mallikoodi, variaatio <?xml version="1.0" ?> <clt132> <hyvaksytyt> <opiskelija> <etunimi>Matti</etunimi> <sukunimi>Mainio</sukunimi> </opiskelija> </hyvaksytyt> <hylatyt> <opiskelija> <etunimi>Pelle</etunimi> <sukunimi>Peloton</sukunimi> </opiskelija> </hylatyt> </clt132> CLT132 – kevät 2008 Sauli Nurmi
Variaation selitys • Luonnollisesti voimme määritellä dokumentin rakenteen kuten haluamme • Variaatio on siis yksityiskohtaisempi esitys samasta aiheesta • Molemmat versiot voisivat kuitenkin olla yhtä oikein – ja jopa täyttää saman XSD:n muotovaatimukset, tapauskohtaisesti (liki identtiset, siis) CLT132 – kevät 2008 Sauli Nurmi
Mallikoodi, DTD <!ELEMENT clt132 (hyvaksytyt|hylatyt)* > <!ELEMENT hyvaksytyt (opiskelija)* > <!ELEMENT hylatyt (opiskelija)* > <!ELEMENT opiskelija (etunimi|sukunimi)* > <!ELEMENT etunimi (#PCDATA) > <!ELEMENT sukunimi (#PCDATA) > CLT132 – kevät 2008 Sauli Nurmi
DTD:n selitys • DTD lienee pitkälti itsensä selittävä... • Määritellään elementit ja niiden sisältö • Esimerkiksi elementissä, joka saa sisälleen muita elementtejä, on kerrottu ensin mitkä elementit se saa sisälleen • Nämä elementit on sittemmin kuvattu itsenäisesti • * = 0-n ilmentymää • #PCDATA = Parced Character Data CLT132 – kevät 2008 Sauli Nurmi
Mallikoodi, XML Schema 1/2 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="clt132"> <xsd:complexType> <xsd:sequence> <xsd:element name="hyvaksytyt" minOccurs = "0" maxOccurs="unbounded" type="opiskelija"/> </xsd:sequence> <xsd:sequence> <xsd:element name="hylatyt" minOccurs = "0" maxOccurs="unbounded" type="opiskelija"/> </xsd:sequence> </xsd:complexType> </xsd:element> CLT132 – kevät 2008 Sauli Nurmi
Mallikoodi, XML Schema 2/2 <xsd:complexType name="opiskelija"> <xsd:sequence> <xsd:element name="etunimi" type="xsd:string" /> <xsd:element name="sukunimi" type="xsd:string" /> </xsd:sequence> </xsd:complexType> CLT132 – kevät 2008 Sauli Nurmi
XML Scheman selitys • Määritellään rakenteinen dokumentti rakenteisessa dokumentissa • (Tämä paremmin tätä ei varmaan voi ilmaista...) • Määritellään siis elementit, niiden tyypit, rakenteiset koosteet/konstruktiot, esiintymiskerrat jne. CLT132 – kevät 2008 Sauli Nurmi
DTD vs. XSD • XML Schema is an XML-based alternative to DTDs. • An XML Schema describes the structure of an XML document. http://www.w3schools.com/schema/default.asp CLT132 – kevät 2008 Sauli Nurmi
Mallikoodi, XML->XHTML 1/2 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:output method="html"/> <xsl:template match="/clt132"> <html> <head> <title>Kurssin opiskelijat</title> </head> <body> <h1>Nimilista</h1> <ul> <xsl:apply-templates select="opiskelija"> <xsl:sort select="sukunimi" /> </xsl:apply-templates> </ul> </body> </html> </xsl:template> CLT132 – kevät 2008 Sauli Nurmi
Mallikoodi, XML->XHTML 2/2 <xsl:template match="opiskelija"> <li> <xsl:value-of select="sukunimi"/><xsl:text>, </xsl:text> <xsl:value-of select="etunimi"/> </li> </xsl:template> </xsl:stylesheet> CLT132 – kevät 2008 Sauli Nurmi
Muunnos, selitys • Muunnoskoodissa on kahdenlaisia elementtejä: • XHTML-elementtejä, jotka kopioidaan sellaisenaan osaksi uutta dokumenttia (“tutut elementit”) • XSD-elementit, joita ei kopioida itsessään, mutta joiden viittaama tieto kopioituu XHTML-elementtien sisälle • Ks. esim. listan toteutus esimerkissä, joka osoittaa toimintaperiaatteen CLT132 – kevät 2008 Sauli Nurmi
Clt236: XML • Näitä (ja paljon muuta) pääsee askartelemaan Clt236-kurssilla, joka ainakin aiempina vuosina on lähtenyt HTML/XHTML-perusasiasta ja edennyt XML:ään, tranformaatioihin ja muihin vastaaviin asioihin • Kurssi on luonnollisesti paljon haastavampi kuin Clt132, mutta ehkä tämän takia myös kiinnostavampi (ainakin mikäli alan asiat kiinnostavat...) • Clt132-perustiedoilla pääsee kuitenkin kurssilla pitkälle (ainakin ekoista laskareista) CLT132 – kevät 2008 Sauli Nurmi
Clt236: XML, kurssisisältö 2007 • HTML, XHTML and CSS • Introduction to XML • DTDs and XML Schemas • Introduction to XSLT • XPath and XSLT • Apache Ant • Introduction to XSL-FO • Using XSL-FO • Scalable Vector Graphics • Introduction to Linguistic Annotation • Linguistic Annotation Tools • Statistical Annotation Tools CLT132 – kevät 2008 Sauli Nurmi
581290 Rakenteisten dokumenttien käsittely • TKTL:n puolella tarjolla on syventävien opintojen kurssi otsikossa olevalla koodilla ja nimellä • “VAROITUS”: kuten yleensä, TKTL:n puolella asioiden käsittelytapa on täysin erilainen kuin esim. kieliteknologian tapa • Parhaiten tämä tulee esille esim. siinä, että mainitulla kurssilla on koe, joka tehdään paperille (materiaali sallittu koetilanteessa) • Harjoituksilla ei siis pääse läpi, vaikka niistä voi rutkasti lisäpisteitä saadakin CLT132 – kevät 2008 Sauli Nurmi
Rak.dok.käs., kurssisisältö 2007 • Introduction • XML Schema • XML Information Set, PSVI, Canonical XML • XSLT+XPath: Review + basic structures • XSLT+XPath: Variables, template calls with parameters • XSLT+XPath: Programming with XSLT • XQuery • Binary XML, XPointer, XLink, XInclude CLT132 – kevät 2008 Sauli Nurmi
Muita • Varmaan muutakin tarjontaa on, mutta siitä tämän kurssin “ope” on tyystin tietämätön • Etsivä löytää, kuten sanonta kuuluu • Toinen mahdollisuus on opiskella esim. Flash-ohjelmointia ja muita web-kikkoja, mutta ne menevät rakenteisten dokumenttien aihepiirin ulkopuolelle (vaikka ovatkin luonteva jatko clt132:lle) CLT132 – kevät 2008 Sauli Nurmi
Lisää aiheesta • clt236: XML - syksy 2007 http://www.ling.helsinki.fi/kit/2007s/clt236/ • 581290 Rakenteisten dokumenttien käsittely http://www.cs.helsinki.fi/kurssit/syventavat/581290-5/ • Introduction to XML by Doug Tidwell (IBM) http://www.ling.helsinki.fi/kit/2003s/ctl230/xml/xmlintro/ • XML Tutorial http://www.w3schools.com/xml/default.asp • DTD Tutorial http://www.w3schools.com/dtd/default.asp CLT132 – kevät 2008 Sauli Nurmi
Viikon oleellisin asia • Kurssin luennot ohi!!! • Lintsin kesäkausi auki!!! • Molemmat samana päivänä! • (“Ope” ei kyllä keksi mitään tämän kurssin kannalta oleellista... Jos joku menee XML-kurssille, niin silloin kaikki tämä tulee tietysti ajankohtaiseksi) CLT132 – kevät 2008 Sauli Nurmi