JAX-P

A Wikipédiából, a szabad enciklopédiából

A Java API for XML Processing vagy JAXP egyike a Java XML programozási API-jának, amely biztosítja az XML dokumentumok validációjához és elemzéséhez szükséges képességeket.

Három alapvető elemzési interfész létezik:

Ezen elemzési interfészek mellett létezik egy másik API is, amely az XSLT interfészt biztosít az adat és strukturális tranzformációkhoz az XML dokumentumokon.

A JAXP-t Java Community Process keretein belül fejlesztették ki a JSR 5 (JAXP 1.0) és JSR 63 (JAXP 1.1 és 1.2) alatt.

Java SE verzió Csomagolt JAXP verzió
1.4 1.1
1.5 1.3
1.6 1.4
1.6 1.4
1.7 1.4.5
1.7.40 1.5
1.8 1.6

2008. február 12-edikén a JAXP 1.3-as verziója elérte az életciklusa végét.

2010. szeptember 3-adikán kiadták a JAXP 1.4.4 verzióját.

DOM interfész[szerkesztés | forrásszöveg szerkesztése]

A DOM interfészt talán a legkönnyebb megérteni: elemzi az egész XML dokumentumot és elkészíti a dokumentum komplett reprezentációját a memóriában, felhasználva azokat az osztályokat, melyek modellezik azt a koncepciót, amely megtalálható a Document Object Model(DOM) Level 2 Core Specification-ban.

A DOM elemzőt DocumentBuilder (dokumentum építő)-nek hívják, mivel felépíti a memóriában a Document (dokumentum) reprezentációját. Ezt a dokumentum építőt (javax.xml.parsers.DocumentBuilder) a javax.xml.parsers.DocumentBuilderFactory készíti el. A DocumentBuilder létrehoz egy org.w3c.dom.Document példányt, ami egy fa struktúra és csomópontokkal reprezentálja az XML dokumentumot. Minden fa csomópont a struktúrában megvalósítja a org.w3c.dom.Node interfészt. Sok különböző típusú fa csomópont létezik, attól függően, hogy az XML dokumentum rész éppen milyen adatot reprezentál.

A legfontosabb csomópont típusok a következők:

  • elem csomópont: ennek lehetnek attribútumai
  • szöveges csomópont: reprezentálja azt a szöveget, ami dokumentum elem kezdő és vég tag-jai között található.

Az org.w3c.dom java csomag Javadoc dokumentációjában megtalálható a teljes lista a csomópont típusokról.

SAX interfész[szerkesztés | forrásszöveg szerkesztése]

A SAX parser-t SAXParser reprezentálja, melyet a javax.xml.parsers.SAXParserFactory hoz létre. A DOM parser-től eltérően, a SAX parser nem készíti el a memóriában az XML dokumentum reprezentációját, így gyorsabb és kevesebb memóriát is használ. E helyett, a SAX parser informálja az XML dokumentum struktúra klienseit callback hívásokkal, amelyeket, org.xml.sax.helpers.DefaultHandler példányán egy metódus hívásával biztosít a parser számára. A dokumentum ilyen módon való elérését XML Streaming-nek hívjuk.

A DefaultHandler osztály megvalósítja a ContentHandler interfészt, és a ErrorHandler interfészt, DTDHandler interfészt, és az EntityResolver interfészt.A legtöbb kliens számára az ContentHandler interfészben definiált metódusok megvalósítása az érdekes, melyek akkor hívódnak meg, amikor a SAX értelmező észreveszi a megfelelő elemet az XML dokumentumban. Az interfész legfontosabb metódusai a következők:

  • startDocument() és endDocument() metódusok meghívódnak az XML dokumentum feldolgozásának kezdeténél és végénél.
  • startElement() és endElement() metódusok meghívódnak az XML dokumentum elem feldolgozásának kezdeténél és végénél.
  • characters() metódus that meghívódik a szöveges adat tartalmakra, melyek az XML dokumentum elem kezdeti és vég tag-jai helyezkednek el.

A kliensek a DefaultHandler egy leszármazott osztályát nyújtják, melyek felüldefiniálják a ezeket metódusokat és feldolgozzák az adatokat. Ezek tartalmazhatnak pl. adat tárolást adatbázisban vagy adat kiírást stream-ekre.

Az értelmező működése során, az értelmezőnek szüksége lehet külső dokumentumok elérésére. Lehetséges lokális gyorsítótárban tárolni a gyakran használt dokumentumokat XML Catalog segítségével.

Ezt 2000 májusában a Java 1.3-al vezették be.[1]

StAX interfész[szerkesztés | forrásszöveg szerkesztése]

A StAX-t a DOM és a SAX interfész közti középútnak tervezték. Azaz a programozott belépési pont a kurzor, ami a dokumentumon belüli pontot reprezentálja. Az alkalmazás mozgatja kurzort előre, szükség szerint kiszedi az információt a parserből. Ez jelentősen különbözik egy eseményvezérelt API-tól - amilyen pl. a SAX -, amely adatot küld az alkalmazásnak és elvárja az alkalmazástól, hogy állapotát megőrizze az események közötti időben és amennyire szükséges nyomon kövesse a helyzetét a dokumentumon belül.

XSLT interfész[szerkesztés | forrásszöveg szerkesztése]

Az XML Stylesheet Language for Transformations (azaz XML transzformációs stíluslap nyelv), vagy XSLT segítségével az XML dokumentumok konvertálhatók más adatformátumokra. A JAXP interfészeket biztosít a javax.xml.transform csomagban, mely biztosítja az alkalmazásoknak, hogy XSLT transzformációkat hívhassanak. Ezeket az interfészeket eredetileg TrAX (Transformation API for XML) névre keresztelték, és egy informális közreműködés eredményeként jött létre számos Java XSLT feldolgozó fejlesztője között.

Az interfészek főbb funkciói:

  • "gyár" osztály, amely lehetővé teszi az alkalmazás számára, hogy dinamikusan választhasson rendelkezésre álló XSLT feldolgozók közül
  • a "gyár" osztály egyes metódusaival készíteni lehet egy Template (sablon) objektumot, amely reprezentálja a stíluslapot lefordított formában. Ez egy szálbiztos objektum, amelyet ismételten lehet használni sorokban v. párhuzamosan is ugyanazt a stíluslapot alkalmazva több forrás dokumentumra (vagy ugyanarra a forrás dokumentumra különböző paraméterekkel).
  • a sablon objektum metódusával készíteni lehet egy Transformer-t (transzformálót), amely reprezentálja a stíluslapot végrehajtható formában. Ez nem osztható meg szálak között, habár sorosan újrahasználható. A Transformer biztosít metódusokat a stíluslap paramétereinek beállításához, szerializációs opciókat (pl. a kimenetre vonatkozókat) továbbá metódusokat az aktuális futtatáshoz.

A Source (forrás) és a Result (eredmény) a két absztrakt interfész, amelyet a kiment és a bemenet transzformációk reprezentálására definiáltak. Ez nem hagyományos használata a Java interfészeknek - habár, nincs elvárás, hogy egy feldolgozó elfogadjon bármely osztályt, amely megvalósítja az interfészt - minden feldolgozó megválaszthatja mely típusú Source- és Result-ot készít elő a feldolgozáshoz. A gyakorlatban minden JAXP feldolgozó 3 fajta sztenderd forrást (DOMSource, SAXSource, StreamSource), 3 fajta sztenderd eredményt (DOMResult, SAXResult, StreamResult) támogat. Természetesen lehetséges más saját megvalósítás is.

Külső hivatkozások[szerkesztés | forrásszöveg szerkesztése]

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

  1. Compare the Java 1.2.1 API index with the 1.3 index. The Java Specification Request (JSR) 5, XML Parsing Specification, was finalised on 21 March, 2000.

Fordítás[szerkesztés | forrásszöveg szerkesztése]

Ez a szócikk részben vagy egészben a Java API for XML Processing című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.