Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałAntoni Mamiński Został zmieniony 10 lat temu
1
Piotr Czapiewski Wydział Informatyki ZUT
2
Extensible Markup Language Język znaczników Human-readable and machine-readable Niezależny od platformy Reprezentacja dokumentów lub danych ustrukturalizowanych
3
Deklaracja XML Element główny (root) Elementy Zagnieżdżanie Atrybuty Elementy puste Java i XML. Wydanie III Brett D. McLaughlin Justin Edelson Helion 2007
4
Metajęzyk Brak zdefiniowanych znaczników, jedynie reguły znakowania Aplikacje XML Specjalizowane języki bazujące na XML XHTML, WML, SVG, MathML, DocBook, WSDL, … XML DTD XHTML XHTML
5
Definiowanie struktury dokumentu XML DTDXML Schema
6
<!DOCTYPE kontakty [ <!ATTLIST kontakt typ (prywatny | służbowy) "prywatny" id ID #REQUIRED> <!ATTLIST telefon typ (stacjonarny | komórkowy) "stacjonarny"> ]> Piotr Czapiewski pczapiewski@wi.ps.pl piotr@test.pl 123456789 Jan Kowalski kowalski@firma.com 1234567 66665432
7
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://wi.zut.edu.pl/ia/books" xmlns="http://wi.zut.edu.pl/ia/books" elementFormDefault="qualified">
9
Zapobieganie konfliktom nazw Elementy z różnych „słowników” w jednym dokumencie Deklaracja: prefiks oraz URI Product Description Product Description
10
Product Description Product Description <root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture"> Product Description African Coffee Table 80 120 <root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture"> Product Description African Coffee Table 80 120 Coffee Table 80 120 Coffee Table 80 120
11
DOM, SAX Parsowanie JAXB Wiązanie XML XPath Przeszukiwanie XSLT Przekształcenia
12
100 sposobów na Excel 2007 PL David Hawley, Raina Hawley 978-83-246-1331-1 Helion 2008 368 125 pytań na temat e-biznesu do Piotra Majewskiego Piotr Majewski 978-83-246-2723-3 Helion 2010 224
13
private static class MyHandler extends DefaultHandler { public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {... } public void endElement(String uri, String localName, String qName) throws SAXException {... } public void characters(char[] ch, int start, int length) throws SAXException {... } };
14
private static class MyHandler extends DefaultHandler { private int bookCount = 0; private List titles = new ArrayList (); private boolean book = false; private boolean title = false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {... } public void endElement(String uri, String localName, String qName) throws SAXException {... } public void characters(char[] ch, int start, int length) throws SAXException {... }
15
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equals("book")) { bookCount++; book = true; } else if(qName.equals("title")) { title = true; } public void endElement(String uri, String localName, String qName) throws SAXException { if(qName.equals("book")) book = false; else if(qName.equals("title")) title = false; } public void characters(char[] ch, int start, int length) throws SAXException { if(book && title) { String title = new String(ch, start, length); titles.add(title); }
16
SAXParser sax = SAXParserFactory.newInstance().newSAXParser(); MyHandler handler = new MyHandler(); sax.parse("books3.xml", handler); int bookCount = handler.getBookCount(); List titles = handler.getTitles(); System.out.println(bookCount); System.out.println(titles);
17
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse("books3.xml"); Element root = doc.getDocumentElement(); String rootName = root.getNodeName(); System.out.println("Element główny: " + rootName); NodeList bookNodeList = root.getElementsByTagName("book"); int n = bookNodeList.getLength(); System.out.println("Liczba książek: " + n);
18
NodeList bookNodeList = root.getElementsByTagName("book"); int n = bookNodeList.getLength(); for(int i=0; i<n; i++) { Node bookNode = bookNodeList.item(i); NodeList childNodes = bookNode.getChildNodes(); for(int j=0; j<childNodes.getLength(); j++) { Node node = childNodes.item(j); if(node.getNodeType() == Node.ELEMENT_NODE && node.getNodeName().equals("title")) { String title = node.getTextContent(); System.out.println(title); }
19
@XmlType(name = "book") public class Book { private String id; private String title; private String author; private String isbn; private Integer year; private String publisher; private Integer pages; @XmlAttribute public String getId() { return id; } public void setId(String id) { this.id = id; }
20
@XmlRootElement(name = "books") public class BookList { private List bookList = new ArrayList (); @XmlElement(name = "book") public List getBookList() { return bookList; } public void setBookList(List bookList) { this.bookList = bookList; }
21
JAXBContext context = JAXBContext.newInstance(BookList.class); Unmarshaller um = context.createUnmarshaller(); FileReader fr = new FileReader("books.xml"); BookList bl = (BookList) um.unmarshal(fr); fr.close(); for(Book b : bl.getBookList()) System.out.println(b.getId() + " " + b.getTitle());
23
XML Path Language Adresowanie części dokumentu XML Przykłady ścieżek Element:/books/book/title Atrybut:/books/book/@id
24
/books/book/title /books/book/@id /books/book[@id="172"] //person //person [ profile/age<25 and profile/gender='female' ] / name
25
Funkcje operujące na liczbach: fn:abs(...) fn:round(...), fn:floor(...), fn:ceiling(...) fn:avg(…), fn:min(…), fn:max(…) Operacje na łańcuchach tekstowych: fn:concat(string1, string2) fn:substring(string, start, length) fn:string-length(...) fn:lower-case(...), fn:upper-case(...) fn:contains(string1, string2), fn:starts-with(string1, string2)
26
//book[ starts-with(title, "Java") ] //book[ contains(title, "Java") ]/title //book[ count(//author)>1 ]/title //book[ string-length(title)>100 ]/title
27
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse("test100k.xml"); XPath xpath = XPathFactory.newInstance().newXPath(); String name = xpath.evaluate("//person[@id='person1']/name", doc); String card = xpath.evaluate("//person[name='Nagasaki']/creditcard", doc);
28
String expr1 = "//person[profile/age<25 and profile/gender='female']/name"; NodeList nodes = (NodeList) xpath.evaluate(expr1, doc, XPathConstants.NODESET); for(int i=0; i<nodes.getLength(); i++) { Node n = nodes.item(i); System.out.println(n.getTextContent()); }
29
String expr2 = "//person[profile/age<25 and profile/gender='female']"; NodeList nodes2 = (NodeList) xpath.evaluate(expr2, doc, XPathConstants.NODESET); for(int i=0; i<nodes2.getLength(); i++) { Node n = nodes2.item(i); String name = xpath.evaluate("name", n); String age = xpath.evaluate("profile/age", n); String email = xpath.evaluate("emailaddress", n); System.out.println(name + ", " + age + ", " + email); }
30
Transformacje XSLT
31
XSL Transformations Język przekształceń dokumentów XML Tłumaczenie dokumentu XML z jednego formatu na inny Arkusz XSLT „Przepis” na transformację Zbudowany z reguł Wykorzystanie XPath
32
Helion Onepress
33
<xsl:stylesheet version="1.0„ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:apply-templates select="//ksiazka[(marka='1' or marka='2') and typ='1' and status='1']" />...
34
... Helion Onepress...
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.