PB138cv/Cv6

Z FI WIKI
Přejít na: navigace, hledání

Schematron

RELAX NG

XPath

  • pro odkázání se na určitý element uvnitř dokumentu.
  • není to XML (podobné např. URI).
  • definuje základní identifikátory a funkce pro výběry jednotlivých uzlů (tj. elementy, textové uzly, jejich množiny či sekvence).
  • viz:

Cesta

  • Absolutní
    • Plná cesta - Začne jedním lomítkem. Cestu k našemu elementu pak vyznačujeme pomocí jeho nadřazených elementů, oddělených dalšími lomítky. Úvodní lomítko vyjadřuje "kořen dokumentu", proto první element v takovéto cestě musí být element kořenový. V případě, že je takovýchto elementů s danou cestou více, jsou takto vybrány všechny. Cesta /aaa/bbb označí toto:
<aaa>
 <ccc/>
 <bbb>
   <ddd/>
 </bbb>
 <eee>
 <bbb/>
</aaa>
    • Zjednodušená cesta - Začne dvěma lomítky. Cesta pak vyjadřuje veškeré skupiny elementů a podelementů vyjádřené ostatní cestou v celé hierarchii dokumentu. První označení elementu pak není kořenový, ale ten, který nás první zajímá. (V případě, že je takovýchto elementů s danou cestou více, jsou takto vybrány všechny.) Například cesta //bbb vybere všechny elementy bbb, a jsou v hierarchii dokumentu na jakémkoli místě, jakkoli hluboko.
  • Relativní - začíná vždy označením elementu. Zatímco absolutní cesta pracuje od kořene elementu, relativní pracuje od "kontextového uzlu". Uzlu, kde se právě vyskytujeme (a který byl např. předtím vybrán pomocí absolutní adresace).

Predikáty

  • určují element, který se má vybrat - v případě, že nám výraz cesty dá množinu.
    • např. boolean (existence, neexistence atributu), zadání jména atributu či elementu/uzlu, číslo...
      • cesta/element[x] x-tý výskyt hledaneho_elementu
      • cesta/element[last()] - poslední výskyt
      • cesta/element[@jmeno] - element, který má atribut jmeno
      • cesta/element[@*]- element, který má jakýkoli atribut
      • cesta/element[not(@prijmeni)] - nemá atribut příjmení
      • cesta/element[@jmeno="Kokrment"] - element, který má atribut jmeno se zadanou hodnotou
      • cesta/element[count(oi)=2] - element, který má počet podelementů oi právě 2
    • zástupné značky
      • * - všechny uzly či atributy
      • . - kontextový uzel
        • name() - jméno kontextového elementu
      • .. - nadřazený uzel
      • string-length(retezec) - délka
        • atd.

Osy

  • vyjadřují směr prohledávání od kontextového uzlu
  • dítě se jménem jmeno: child::jmeno
  • všichni rodiče: parent::*
    • atd. - viz tutoriály (sourozenci, potomci, atributy, textové uzly, všechny předchozí uzly)

XLink

HLink - specifikace vycházející z XLink, pro XHTML).

  • simple - jednoduchý 1-1 odkaz. Definován atributem xlink:type="simple" Příklad:
<elsw:dokument xmlns:elsw = "http://nlp.fi.muni.cz/projekty/elsw/" xmlns:xlink = "http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="docs/dokument.pdf" />
  • extended - obecně svázáno n-m zdrojů. Definován atributem xlink:type="extended". Může se odkazovat na cizí dokumenty (locator), nebo sám do svého (resource). Resource určuje to, na co se chceme odněkud odkazovat. Locator je místo, odkud se chceme odkazovat (jinam).

Resource:

<student xlink:label="Jan Novák" xlink:type="resource" xlink:role="http://www.example.com/linkprops/student" xlink:title="Mgr. Jan Novák">3.5</student> 

Locator1:

<osoba xlink:label="A" xlink:type="locator" xlink:role="http://www.example.com/linkprops/student" xlink:title="Mgr. Jan Novák" xlink:href="studenti/jan_novak.xml"/> 

Locator2:

<osoba xlink:label="B" xlink:type="locator" xlink:role="http://www.example.com/linkprops/student" xlink:title="Irena Nováková" xlink:href="studenti/irena_novakova.xml"/> 

A z nich vytvoříme třeba takto odkaz:

<odkaz xlink:from="A" xlink:to="B" xlink:type="arc"/> 

XPointer

Využívá jej (například) XLink, pro ukazování dovnitř dokumentu. Samotný XPointer používá k adresaci uzlů dokumentu XPath. Informace: Zvon.org XPointer tutoriál, slídy z přednášek.

Použití XPath v Javě

  • JAXP - XPath API...
  • Saxon - SAX-parser a XSLT procesor
    • V něm existuje třída net.sf.saxon.xpath.XPathEvaluatorve které se opět vyskytují podobné metody - evaluate(), vracející List uzlů a evaluateSingle() pro vrácení prvního uzlu. V případě výběru uzlu vrací NodeInfo, jinak atomické hodnoty.
  • Xalan - další parser
    • ApplyXPath utilita možno použít pro kontrolu XPath řetězců
  • DOM4J

Příklad

  • Mějme tento zkušební XML soubor - screen.xml. Vytvořte k němu postupně:
    • Tři různé XPath struktury, které vyberou element <menuitem text="Otevřít..." icon="/icon/open.gif" action="openFileDialog(thinlet)" />
    • XPath stukturu, která vybere všechny <separator/>
    • XPath stukturu, která vybere celé menu Zobrazit - tj. element na řádku 24 a jeho podelementy.
    • Tlačítka (element button), která mají přidělenou akci (atribut action)
  • Který element vybere z dokumentu screen.xml tento xpointer řetězec? xpointer(//menu[@text="Nápověda"]/*[3]) element(/2/1)
  • Vytvořte simple-xlink odkaz, odkazující se na tlačítko "Zpět" (element na řádku 45)