Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.

Podobne prezentacje


Prezentacja na temat: "Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy."— Zapis prezentacji:

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">

8

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());

22

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...


Pobierz ppt "Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy."

Podobne prezentacje


Reklamy Google