SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Укрощение XML

                      Дмитрий Шабанов
                          eXist-db.org
                         animotron.org
                        twitter.com/shabanovd

http://exist-db.org
Мифы и реальность



         Когда используешь XML, то НЕ
                НАДО РАБОТАТЬ

        XML НЕ РЕШИТ Ваших проблем


http://exist-db.org
Мифы и реальность




                       XML — это формат
                        представления
                      данных и структуры


http://exist-db.org
Мифы и реальность



                      Стандарты

         договоренность достигнутая и
            принятая сообществом


http://exist-db.org
Стандарты - W3C

                  XML, HTML5, URI, PNG ...
                             ...
                          XQuery,
                   XSL, XSL-FO, XProc, …
                             ...
                   XForms, VoiceXML, …
                        MathML, ...
http://exist-db.org
Стандарты - OASIS



                        DocBook
                          DITA
                      OpenDocument
                         XACML
                           ….

http://exist-db.org
Стандарты - DocBook
    <article>
     <title>Writing DocBook articles</title>
     <artheader>
      <abstract>
    This article describes how you can use DocBook to develop PDF
    documents and will cover tools you need to edit DocBook articles and
    tools to translate them to PDF documents.
      </abstract>
      <author>
       <firstname>Egon</firstname>
       <surname>Willighagen</surname>
      </author>
      <date></date>
     </artheader>
    </article>
http://exist-db.org
Стандарты - DocBook




http://exist-db.org
Трансформации
                      http://nwalsh.com/docbook/procdiagram/




http://exist-db.org
XForms

    <xf:input id="first" ref="firstname">

     <xf:label>Firstname:</xf:label>

     <xf:hint>enter your firstname</xf:hint>

     <bf:data
       bf:readonly="false"
       bf:required="true"
       bf:type="string"/>

    </xf:input>


http://exist-db.org
XForms




                      XSLTForms

                      BetterFORM


http://exist-db.org
XQuery




                      Язык запросов

                         XQuery


http://exist-db.org
XQuery

    <PLAY>
     <TITLE>The Tragedy of Hamlet, Prince of Denmark</TITLE>
                                           ...
     <ACT>
      <TITLE>ACT I</TITLE>
      <SCENE>
      <TITLE>SCENE I. Elsinore. A platform before the castle.</...
                                           ...
      <SPEECH>
       <SPEAKER>BERNARDO</SPEAKER>
       <LINE>Who's there?</LINE>
      </SPEECH>
      <SPEECH>
       <SPEAKER>FRANCISCO</SPEAKER>
                                           ...

http://exist-db.org
XQuery
    <html><head/><body>
    {
      for $act in doc("hamlet.xml")//ACT
      let $speakers := distinct-values($act//SPEAKER)
      return
       <div>
        <h1>{ string($act/TITLE) }</h1>
        <ul>
        {
          for $speaker in $speakers
          return <li>{ $speaker }</li>
        }
        </ul>
       </div>
    }
    </body></html>
http://exist-db.org
XQuery


    <html><head/><body>
      <div>
       <h1>ACT I</h1>
       <ul>
        <li>BERNARDO</li>
        <li>FRANCISCO</li>
            ...
       </ul>
      </div>
       ...
    </body></html>


http://exist-db.org
XQuery


                         Язык запросов
                               и
                      функциональный язык
                       программирования

                            XQuery
http://exist-db.org
XQuery

    xquery version "3.0";

    declare namespace ex =
                                  "http://exist-db.org/xquery/ex";

    declare function ex:map($func, $list) {
       for $item in $list return $func($item)
    };

    (: Create an inline function and assign it to $f :)
    let $f := upper-case#1
    return
       ex:map($f, ("Hello ", "world!"))

http://exist-db.org
XQuery




                      map( function($x) { $x * $x }, 1 to 5 )




http://exist-db.org
XQuery Update Facility



                            Язык
                      модификации данных

                      XQuery Update Facility


http://exist-db.org
XQuery Update Facility

  <root>
    <message>Hello World</message>
  </root>


  let $doc := doc('/db/test.xml')/root

  let $update := insert node attribute foo {'bar'} into $doc

  return $doc


  <root foo="bar">
    <message>Hello World</message>
  </root>

http://exist-db.org
Принцип наследования

                      XPath

                                XSL
    XQuery
                              XSL-FO
    XQuery
    Update Facility
http://exist-db.org
Локоничней

     XQuery enables you to achieve high productivity
                    in your projects

      The Amazon XQuery Client Library was written
     with 80% less code than its equivalent written in
                          Java

                                    zorba-xquery.com


http://exist-db.org
Что почитать?




               http://en.wikibooks.org/wiki/XQuery




http://exist-db.org
XQuery processors

    BaseX
                           Berkeley DB XML
                                                        eXist-db
    DB2 9 with pureXML
                                                      MarkLogic
    MonetDB/XQuery
                                              MS SQL Server 2005
    Saxon
                                  Zorba
    http://www.rpbourret.com/xml/ProdsNative.htm

http://exist-db.org
XQuery processors



                      Stream

                        vs

                      Storage

http://exist-db.org
Этапы развития



                      XML-enabled

                          VS

                      Native XML

http://exist-db.org
Поколения




               4th generation of databases
                                        Juha Kontio




http://exist-db.org
XML Database




    http://exist-db.org/
http://exist-db.org
Кто использует?

                         U.S. State Department Office
                           of the Historian website

                reBiND project                               easyDITA

    University of Heidelberg
                                                University of Richmond
                                     …..
    Томский Политехнический Университет http://tpu.ru
                         ЗАО «МЦФЭР» http://mcfr.ru

http://exist-db.org
Как использует?



       I have successfully stored over 16,000,000 XML documents in
                    eXist-db … 1KB - 4KB each (~30Gb).

      Querying was still possible…, so it must have been 3< seconds.

                                                         Adam Retter




http://exist-db.org
XML Database

    ● REST (URL Rewriting)
    ● WebDAV

    ● Security:

      ● multiple realms


        LDAP, OAuth, OpenID
      ● Unix permissions model (bitmap)

      ● Access control list

    ● XQuery 3.0

    ● XSL (Saxon)

    ● EXPath: packaging & modules



http://exist-db.org
XML Database


    ●
     Content Extraction and Binary
    Resource Indexing
    ● Lucene

    ● JSON & HTML 5 serializer

    ● «Applications» concept




http://exist-db.org
Что можно сделать?



                         Быстро состряпать
                      форму для сбора данных
                                 и
                        дальнейший анализ
                       сохраненных данных.



http://exist-db.org
Что можно сделать?




                      Сбор и обработка данных




http://exist-db.org
Что можно сделать?




     Браузер читающий твиты используя механизм
    text-to-speech встроенный в браузер.




http://exist-db.org
Что можно сделать?




                        Разработать CMS
                              или
              систему управления бизнес процессами
                     для вашей организации.




http://exist-db.org
IDE




                      <oXygen/> XML editor

                        eXide — web IDE


http://exist-db.org
<oXygen/> XML editor




http://exist-db.org
eXide IDE




http://exist-db.org
Concepts: XRX




http://exist-db.org
Concepts: RESTXQ

                        RESTXQ
                                                Adam Retter's
                                        XML Prague 2012 paper
    declare

         %rest:path(“/say/hello/{$name}”)

    function local:say-hello($name) {
       <hello>{$name}</hello>
    };
http://exist-db.org
Concepts: Applications




        Database next stage: Applications
                   container



http://exist-db.org
....




                            Вопросы
                               и
                      возможно даже ответы


http://exist-db.org
.


                  Пожалуйста, поставьте
                  оценку моему докладу.

             Ваше мнение очень важно.

                        Спасибо!
http://exist-db.org

Mais conteúdo relacionado

Mais procurados

Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupalCamp Kyiv Рысь
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Yandex
 
04 - Hadoop. HDFS Java API
04 - Hadoop. HDFS Java API04 - Hadoop. HDFS Java API
04 - Hadoop. HDFS Java APIRoman Brovko
 
загрузить в DSpace
загрузить в DSpaceзагрузить в DSpace
загрузить в DSpaceFedor Krasnov
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк SparkRoman Brovko
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Yandex
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма SparkRoman Brovko
 
«Highload блоки и новое api к ним»
«Highload блоки и новое api к ним» «Highload блоки и новое api к ним»
«Highload блоки и новое api к ним» Гузель Рахимова
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с ElasticsearchОмские ИТ-субботники
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Yandex
 

Mais procurados (20)

Drupal 7 and History.js
Drupal 7 and History.jsDrupal 7 and History.js
Drupal 7 and History.js
 
DBIx Class
DBIx ClassDBIx Class
DBIx Class
 
Drupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайтDrupal 7 и history.js или как ajax инфицировать сайт
Drupal 7 и history.js или как ajax инфицировать сайт
 
FileAPI 2.0
FileAPI 2.0FileAPI 2.0
FileAPI 2.0
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
 
04 - Hadoop. HDFS Java API
04 - Hadoop. HDFS Java API04 - Hadoop. HDFS Java API
04 - Hadoop. HDFS Java API
 
My sql 1
My sql 1My sql 1
My sql 1
 
загрузить в DSpace
загрузить в DSpaceзагрузить в DSpace
загрузить в DSpace
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
XSLT - 3
XSLT - 3XSLT - 3
XSLT - 3
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
 
«Highload блоки и новое api к ним»
«Highload блоки и новое api к ним» «Highload блоки и новое api к ним»
«Highload блоки и новое api к ним»
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
 
Yserver
YserverYserver
Yserver
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
 
Squeek school #6
Squeek school #6Squeek school #6
Squeek school #6
 

Semelhante a Укрощение XML

JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianMikhail Davydov
 
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & TricksQA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & TricksQAFest
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеAlex Tumanoff
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...Ontico
 
Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014Yandex
 
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...it-people
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Yandex
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс СерверPVasili
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...CocoaHeads
 
IOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureIOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureVadim Novitskiy
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Dmitriy Krukov
 

Semelhante a Укрощение XML (20)

JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
 
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & TricksQA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопе
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...
Развитие баз данных в Dropbox. Путь от одной глобальной базы MySQL к 6000 шар...
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014Как мы документируем программные интерфейсы. YaC 2014
Как мы документируем программные интерфейсы. YaC 2014
 
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
XSLT -5
XSLT -5 XSLT -5
XSLT -5
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
 
IOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureIOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows Azure
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5
 

Укрощение XML

  • 1. Укрощение XML Дмитрий Шабанов eXist-db.org animotron.org twitter.com/shabanovd http://exist-db.org
  • 2. Мифы и реальность Когда используешь XML, то НЕ НАДО РАБОТАТЬ XML НЕ РЕШИТ Ваших проблем http://exist-db.org
  • 3. Мифы и реальность XML — это формат представления данных и структуры http://exist-db.org
  • 4. Мифы и реальность Стандарты договоренность достигнутая и принятая сообществом http://exist-db.org
  • 5. Стандарты - W3C XML, HTML5, URI, PNG ... ... XQuery, XSL, XSL-FO, XProc, … ... XForms, VoiceXML, … MathML, ... http://exist-db.org
  • 6. Стандарты - OASIS DocBook DITA OpenDocument XACML …. http://exist-db.org
  • 7. Стандарты - DocBook <article> <title>Writing DocBook articles</title> <artheader> <abstract> This article describes how you can use DocBook to develop PDF documents and will cover tools you need to edit DocBook articles and tools to translate them to PDF documents. </abstract> <author> <firstname>Egon</firstname> <surname>Willighagen</surname> </author> <date></date> </artheader> </article> http://exist-db.org
  • 9. Трансформации http://nwalsh.com/docbook/procdiagram/ http://exist-db.org
  • 10. XForms <xf:input id="first" ref="firstname"> <xf:label>Firstname:</xf:label> <xf:hint>enter your firstname</xf:hint> <bf:data bf:readonly="false" bf:required="true" bf:type="string"/> </xf:input> http://exist-db.org
  • 11. XForms XSLTForms BetterFORM http://exist-db.org
  • 12. XQuery Язык запросов XQuery http://exist-db.org
  • 13. XQuery <PLAY> <TITLE>The Tragedy of Hamlet, Prince of Denmark</TITLE> ... <ACT> <TITLE>ACT I</TITLE> <SCENE> <TITLE>SCENE I. Elsinore. A platform before the castle.</... ... <SPEECH> <SPEAKER>BERNARDO</SPEAKER> <LINE>Who's there?</LINE> </SPEECH> <SPEECH> <SPEAKER>FRANCISCO</SPEAKER> ... http://exist-db.org
  • 14. XQuery <html><head/><body> { for $act in doc("hamlet.xml")//ACT let $speakers := distinct-values($act//SPEAKER) return <div> <h1>{ string($act/TITLE) }</h1> <ul> { for $speaker in $speakers return <li>{ $speaker }</li> } </ul> </div> } </body></html> http://exist-db.org
  • 15. XQuery <html><head/><body> <div> <h1>ACT I</h1> <ul> <li>BERNARDO</li> <li>FRANCISCO</li> ... </ul> </div> ... </body></html> http://exist-db.org
  • 16. XQuery Язык запросов и функциональный язык программирования XQuery http://exist-db.org
  • 17. XQuery xquery version "3.0"; declare namespace ex = "http://exist-db.org/xquery/ex"; declare function ex:map($func, $list) { for $item in $list return $func($item) }; (: Create an inline function and assign it to $f :) let $f := upper-case#1 return ex:map($f, ("Hello ", "world!")) http://exist-db.org
  • 18. XQuery map( function($x) { $x * $x }, 1 to 5 ) http://exist-db.org
  • 19. XQuery Update Facility Язык модификации данных XQuery Update Facility http://exist-db.org
  • 20. XQuery Update Facility <root> <message>Hello World</message> </root> let $doc := doc('/db/test.xml')/root let $update := insert node attribute foo {'bar'} into $doc return $doc <root foo="bar"> <message>Hello World</message> </root> http://exist-db.org
  • 21. Принцип наследования XPath XSL XQuery XSL-FO XQuery Update Facility http://exist-db.org
  • 22. Локоничней XQuery enables you to achieve high productivity in your projects The Amazon XQuery Client Library was written with 80% less code than its equivalent written in Java zorba-xquery.com http://exist-db.org
  • 23. Что почитать? http://en.wikibooks.org/wiki/XQuery http://exist-db.org
  • 24. XQuery processors BaseX Berkeley DB XML eXist-db DB2 9 with pureXML MarkLogic MonetDB/XQuery MS SQL Server 2005 Saxon Zorba http://www.rpbourret.com/xml/ProdsNative.htm http://exist-db.org
  • 25. XQuery processors Stream vs Storage http://exist-db.org
  • 26. Этапы развития XML-enabled VS Native XML http://exist-db.org
  • 27. Поколения 4th generation of databases Juha Kontio http://exist-db.org
  • 28. XML Database http://exist-db.org/ http://exist-db.org
  • 29. Кто использует? U.S. State Department Office of the Historian website reBiND project easyDITA University of Heidelberg University of Richmond ….. Томский Политехнический Университет http://tpu.ru ЗАО «МЦФЭР» http://mcfr.ru http://exist-db.org
  • 30. Как использует? I have successfully stored over 16,000,000 XML documents in eXist-db … 1KB - 4KB each (~30Gb). Querying was still possible…, so it must have been 3< seconds. Adam Retter http://exist-db.org
  • 31. XML Database ● REST (URL Rewriting) ● WebDAV ● Security: ● multiple realms LDAP, OAuth, OpenID ● Unix permissions model (bitmap) ● Access control list ● XQuery 3.0 ● XSL (Saxon) ● EXPath: packaging & modules http://exist-db.org
  • 32. XML Database ● Content Extraction and Binary Resource Indexing ● Lucene ● JSON & HTML 5 serializer ● «Applications» concept http://exist-db.org
  • 33. Что можно сделать? Быстро состряпать форму для сбора данных и дальнейший анализ сохраненных данных. http://exist-db.org
  • 34. Что можно сделать? Сбор и обработка данных http://exist-db.org
  • 35. Что можно сделать? Браузер читающий твиты используя механизм text-to-speech встроенный в браузер. http://exist-db.org
  • 36. Что можно сделать? Разработать CMS или систему управления бизнес процессами для вашей организации. http://exist-db.org
  • 37. IDE <oXygen/> XML editor eXide — web IDE http://exist-db.org
  • 41. Concepts: RESTXQ RESTXQ Adam Retter's XML Prague 2012 paper declare %rest:path(“/say/hello/{$name}”) function local:say-hello($name) { <hello>{$name}</hello> }; http://exist-db.org
  • 42. Concepts: Applications Database next stage: Applications container http://exist-db.org
  • 43. .... Вопросы и возможно даже ответы http://exist-db.org
  • 44. . Пожалуйста, поставьте оценку моему докладу. Ваше мнение очень важно. Спасибо! http://exist-db.org