XML Extensible Markup Language Program •XML – hvordan ser et XML dokument ut? •Programmatisk behandling av XML •SAX – Simple API for XML •DOM – Document.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Nyhetsfôring med RSS ALEPH brukermøte 2006
JSP presentasjon Arild Strømhylden NTNU 26 June 2014.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
XML EXtensible Markup Language
XMLSchema.  Innledende eksempler: Tove 4. Janni 5. Huskelapp 6. Ikke glem avtalen til helgen 7. Vi har sett DTD’en til dette xml dok. Her kommer.
Unit testing Gruppe 2: Kjartan Haugen Jon Gunnar Bjørkmo
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Databasehåndtering med MySQL
© Lars-Erik Kindblad.  Et platformuavhengig verktøy for å automatisere build prosesser.  Støttes og drives av Apache Software Foundation.  Kommer ferdig.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
En gang til!? .
Prosjektet transparente lag Composite og tegnende objekter Decorator og gui-kontrollere Factory Method Iterator.
Web-applikasjoner Prosjekt3 Logging Gruppe 9 Malik Muhammad Naeem Kevan Qureshi.
Mohammad Ali Koteich Danial Siddiq Sheikh. Hva skal vi snakke om? Directory LDAP The Apache Directory Project.
XMLBeans av Vegard Skipnes (s141721). Agenda Hva er XMLBeans? Historie Eksempel  XML Schema  XML fil  Bruk i java Innstallering Min mening Sammendrag.
XMLSchema.
JAVASCRIPT I NETTLESEREN. Objekter i nettleseren Objekter som er innebygd i språket Egendefinerte objekter Nettleser objekter HTML objekter.
EVENTS. Event modeller Javascript 1.0 og 1.1 Netscape Commander 4.x Internet Explorer 4.x DOM level 2 Internet Explorer 5.x.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
XML Extended Markup Language - The ASCII of the Future.
XML.
Digital Documents Gisle Hannemyr Autumn 2002 Introducing XML, CSS, XSL eXtensible Markup Language Cascading Style Sheets XML Style Language.
Innledning om HTML IT20 oktober Bakgrunn Konseptet WWW ble født i 1983 i CERN, Geneve Opphavsmann: Tim Berners-Lee, MIT Spre informasjon uavhengig.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
XSLT The Candy Community. Fiktivt community Godteri-relatert og sukkersøt musikk. To typer metadata: Candy factor Sugar level.
CSS Doing it in style!. CSS Cascading style sheets. Eget språk for presentasjon av dokumenter. Ligner Java-syntaks. Klasser av stiler for gjenbruk. Kaskaderende.
DOM og scripting Making it come alive. Hva er DOM? Standard for å definere trestrukturen til XML-dokumenter. IDL-spesifikasjon av grensesnitt, egenskaper.
Databasen IV Stemmer og kommentarer. Stemmer Avgis på hvorvidt metadata passer på noden. fitness: Hvor godt et egenskap passer til dataene den beskriver.
Kort om XML Språket om språket. XML: Eksempel Hans Tømmerholt.
Kommentarer og stil ”Dette suger!” ”Ne-hei!” ”Jo- hoo”, osv.
Kort om HTML ML meg her og ML meg der. En SV’er til og med.
Kort om HTML ML meg her og ML meg der..
SQL+XQuery+XML+ PHP+XSLT+HTML = $$ ?. CGI Common Gateway Interface Parametere til websider (server-side scripts) I URL'en:
Oblig 2: The Candy-community. Om XML, XSLT, Sablotron og HTML.
Hvorfor lære HTML og PHP
Oppgaveformatet. Oversikt XML-format, spesifisert gjennom et XML Schema. Består av et sett lovlige elementer og attributter og hvordan de kan ordnes i.
PARLAY/OSA Referanser: Referanser Foredraget er i all hovedsak basert på to artikler. Disse kan finnes på:
Om Internett, World Wide Web, egen hjemmeside Ole Christian Rynning
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
02 - Java datatyper Grundlæggende om datatyper og variable.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Termbaser Lars Nygaard. Termbaser Database over begreper Innhold –Definisjoner –Oversettelser –Leksikalske relasjoner –Eksempler.
Formalisering av B2B applikasjoner
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Katalog med tjenester n Masse tjenester, men det er ikke lett å finne de. n Tjeneste tilbyder må selv kunne oppdatere. n Tjenesten selv forteller hva den.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Hva er XML/EDI Per Myrseth Norsk Regnesentral
Mer html display, form,. Krav til innlevering Utvikles i HTML5 Være velformet og validert Benytte css Drop down menyer Basere seg på HTML5 tagger for.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Konventionel tekstformatering: Her har vi en overskrift fulgt af normal tekst Deskriptiv tekstformatering: Her har vi en overskrift fulgt af normal tekst.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Intro til (x)html Del 1. HUMIT1731 uke35b Kåre A. Andersen 2 En mal … Dette er en mal for DTD XHTML 1.0 Transitional Her kommer.
HUMIT1731 Hypermedier Introduksjon til Extensible Markup Language (XML)
HUMIT1731 Hypermedier Eksamen folk.uio.no/kaarean/humit1731/oppgaver/Humit1731_h08.doc.
XML og JDOM Helge Furuseth XML  XML = Extensible Markup Language Basert på SGML – Standard Generalized Markup Language  HTML =
HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
Se side 8-9. Kapittel 1: HTML5 og CSS Hyper Text Markup Language 1990-årene: Tim Berners-Lee ville strukturere tekster og lage klikkbare henvisninger på.
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
IS-102 Interaksjon med objekter
Utskrift av presentasjonen:

XML Extensible Markup Language

Program •XML – hvordan ser et XML dokument ut? •Programmatisk behandling av XML •SAX – Simple API for XML •DOM – Document Object Model •JDOM – Java DOM •Transformasjonsbasert XML behandling •XSLT

Hvorfor •Integrasjon •Interne systemer i bedrifter •Hele næringskjeder/nettverk •Konsolidering av informasjonkilder •Innhold vs presentasjon – dekobling •Datalagring

Hva •Tekst-basert •Bestanddeler •Elementer – start-tag og slutt-tag •Attributter – tilhører elementer •Tekst – inneholdt i et element •Kommentarer, direktiver, CDATA •XML-standarden (W3C) •Definere velformede dokumenter

Text-contents (no contain special characters) Some more text Eksempel XML Definition (prolog) Opening tag Processor Instruction Root elementNested element Textual content Namespace usage Closing tag Attribute Empty element can be collapsed Namespace definition

Begrensninger i forhold til HTML List item text Second list item text Some normal text some bold text some bold-italic some italic Systek First not closed Incorrectly nested elements Empty element must be explicitly closed All attribute values must be ”quoted”

Document Type Definitions •Definerer lovlige dokumenter for en dokument- type (”XML-språk”) •Kan definere – for element-noder: •Tillatte underelementer, inkludert rekkefølge •Tekst tillatt? (ellers blir whitespace ignorert) •Tillatte og påkrevde attributter •For attributter •Tillatte verdier •Id-semantikk (unike per dokument)

DTD Eksempel (oppskrifthefte) …

Alfabetsuppe: XML standarder •DTD – Document Type Definition •XSLT – Extensible Style Language Tranformations •XLink/XPointer/XPath •DOM – Document Object Model •SAX – Simple API for XML •SOAP – Simple Object Access Protocol •Java-spesifikk: JAXP, JAXM, JAXB, TrAX, JDOM

Eksempler på XML-språk •XSLT er selv et XML språk •XHTML 1.0 •VoiceXML •SOAP •SVG •SMIL •MathML •WML

Organisasjoner •XML FokusIBM, Microsoft, Sun, og Oracle •Java XML parsere: Oracle, OASIS og ASF ++ •Xml.Apache.Org: Bygger på kildekode donert fra Sun (Project X/Crimson) og IBM (XML4J) •Xerces: XML Parser (DOM & SAX) •Xalan: XSL Processor (XSLT & XPath) •Cocoon: Servlet-based XSL processor (uses Xalan) •SOAP •Batik (SVG processor)

Hvordan •Event-basert (f. eks. for å bygge en struktur) •SAX •Tre-basert (f.eks. for å manipulere et dokument) •DOM og JDOM •Transformasjon-basert (f.eks. for å vise i HTML eller PDF) •XSLT

Demo: Konstruere et JTree fra et XML dokument

SAX - Fremgangsmåte 1.Definér en dokument hånterer (DocumentHandler) 2.Assosiert håntereren med en parser 3.Angi dokument 4.Parseren vil kalle DocumentHandler’s metoder

Rull opp ermene! public interface DocumentHandler { void startElement(String name, AttributeList atts) void endElement(String name) void characters(char ch[], int start, int length) void startDocument() void endDocument() void ignorableWhitespace(char ch[], int start, int length) void processingInstruction(String target, String data) void setDocumentLocator (Locator locator); }

Eksempel: Konstruerer en JTree public void startElement (String nsURI, String localName, String qName, Attributes attrs) { StringBuffer nodeText = new StringBuffer("<" + localName); for ( int i=0; i<attrs.getLength(); i++ ) nodeText.append(" " + attrs.getLocalName(i) + "='" + attrs.getValue(i) + "'"); nodeText.append(">"); DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(nodeText.toString()); this.currentNode.add(newNode); this.currentNode = newNode; this.currentText = new StringBuffer(); } public void characters (char ch[], int start, int length) { this.currentText.append(ch, start, length); } public void endElement(String nsURI, String localName, String qName) { String contents = this.currentText.toString().trim(); if ( contents.length() != 0 ) this.currentNode.add(new DefaultMutableTreeNode(contents)); this.currentNode = (DefaultMutableTreeNode)currentNode.getParent(); }

Start parsingen SaxTreeViewer(String docName) { TreeInsertingDocHandler myDocHandler = new TreeInsertingDocHandler(); String parserClass = "org.apache.xerces.parsers.SAXParser"; try { XMLReader parser = XMLReaderFactory.createXMLReader(parserClass); parser.setContentHandler(myDocHandler); parser.parse(docName); } catch (SAXException se) { se.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } getContentPane().add(new JTree(myDocHandler.currentNode.getFirstChild())); }

SAX – forklaring •Høy performance •Har ingen intern tre-struktur •Vi lager istedet vår egen (javax.swing.tree.DefaultTreeModel) •Går gjennom dokumentet én gang •Lineært: Fra begynnelse til slutt

DOM •W3C standard •DOM Level 2 på over 400 sider •Definerer et dokument som et tre •Sentrale klasser: •Node + subklasser (Attr, Character, Element...) •NamedNodeList (for Attributes) •NodeList (for subtrær)

Fra Xerces’ DOM javadoc interface org.w3c.dom.NamedNodeMap interface org.w3c.dom.Node interface org.w3c.dom.Attr interface org.w3c.dom.CharacterData interface org.w3c.dom.Comment interface org.w3c.dom.Text interface org.w3c.dom.CDATASection interface org.w3c.dom.Document interface org.w3c.dom.DocumentFragment interface org.w3c.dom.DocumentType interface org.w3c.dom.Element interface org.w3c.dom.Entity interface org.w3c.dom.EntityReference interface org.w3c.dom.Notation interface org.w3c.dom.ProcessingInstruction interface org.w3c.dom.NodeList

Org.w3c.dom.Node Aksessorer: •NodeName •NodeValue (rw) •ParentNode •ChildNodes •First, Last Child •Previous, Next Sibling •Attributes •OwnerDocument Operasjoner •insertBefore •replaceChild •removeChild •appendChild •cloneNode

DOMTreeModel v. 1 •Bruker Adaptor patternet •Gir innblikk i både DOM og JTree •Se vedlagt kode JTreeTreeModel DOMTreeModel org.w3c.dom.Document

DOMTreeModel v. 2 •Har XPath støtte •Apache Xalan •Skriv inn en XPath •Trykk return •Matchende noder velges

DOMTreeModel v. 3 •Demonstrerer endringer i et DOM tre •Koden er ikke spesielt pen, men ligger vedlagt alikevel •Operasjoner: •Legge til Element-node •Legge til Tekst-node •Endre eller sette attributt •Remove node •Lagre

JDOM •JDOM er utviklet av Brett McLaughlin, forfatter av ”Java and XML” •Gir en mer Java-vennlig DOM enn DOM •Bruker overloading •Bruker eksisterende Java-klasser, som List •Mangler mye av det mer avanserte relatert til DOM, f.eks. XPath •Kildekode for JDomTreeViewer ligger vedlagt

XPath •En del av familien med referanser i XML •Brukes til å velge ut deler av et dokument-tre f.eks. under Transformasjoner (XSLT) •Minner om filstruktur •. er ”denne node” •.. er •/ skiller noder på forskjellig nivåer •/ angir dokument-rot •// finner noder på ALLE undernivåer •* er alle element-noder •text() finner tekst-noder

XPath eksempler •person •./person (samme som forrige) •./person/* •./person/*/text() •./person//*/text() •//text()

XPath •Begrensninger/filter angis i [] •//person[./name/family/text() = "Worker"] •//person[name/family/text()='Worker']/ /text() •Default – nodenummer •//person[1]/name/* •Attributter angis •Dersom DTD angir id attributter, kan disse brukes:

XPath – the full story •Formene vi har sett er forenklinger •Full XPath bruker akser – syntaks: aksenavn::nodetest • == child:: •. == self::node() •.. == parent::node() == attribute:: •// == descendant::

XPath akser eksempler •./person == self::*/child::person = "Big.Boss"]/.. == descendant::link[attribute::manager = "Big.Boss"]/parent::

XSLT •Transformerer fra et XML språk til et annet •Bruker templates for å behandle segmenter •Bruker XPath for å velge ut segmenter •Vi skal lage tre XSL stylesheets som alle skal oversette et XML språk (recipeML) til XHTML 1.0

Eksempel <xsl:template match="XPath pattern" [name="name" priority="number" mode="mode"]> Tekst, XML tekst, <xsl:value-of select="XPath expression"/>

Workshop – Delicatessen from the Kitchen of Mrs. Brodwall •For oppgaven er det definert et oppskriftshefte •10 Gode Oppskrifter •Oppskriftene bruker et DTD •Vi skal lage tre stylesheets 1.List alle kategorier 2.List alle oppskrifter i en kategori 3.Vi én oppskift

Organisasjon •Hver gruppe har ett område på STEP serveren •Se for instruksjoner og tips •.../groupX/recipes/stylesheet?param=value... •Eksempel.../recipe/recipes/list?type=Chinese •Bruker list.xsl med parameter type satt til Chinese •Stylesheet’ene ligger rett under groupX-sharet på jonatan •types.xsl, list.xsl, og show.xsl er definert •Dere kan godt definere egne stylesheets