☰ menu
Pavel Satrapa

Jazyky pro popis dat
kombinované studium

Nástroje

xmllint

Jednoduchý program pro úpravu formátování XML dokumentů. Vhodný pro validaci. Použití:

xmllint --noout soubor.xml
zkontroluje, zda je soubor.xml správně strukturovaný.

xmllint --noout --valid soubor.xml
zkontroluje, zda je soubor.xml správný (validní). XML soubor musí obsahovat odkaz na DTD.

xmllint --noout --schema jazyk.xsd soubor.xml
zkontroluje, zda je soubor.xml správný (validní) podle XML schématu v souboru jazyk.xsd.

xmllint --noout --relaxng jazyk.rng soubor.xml
zkontroluje, zda je soubor.xml správný (validní) podle Relax NG schématu v souboru jazyk.rng.

xsltproc

Jednoduchý XSLT procesor, součást balíku libxslt. Použití:

xsltproc styl.xsl soubor.xml
transformuje soubor.xml podle pravidel daných v styl.xsd.

Cvičení

Cvičení vypracujte v uvedených termínech a výsledky mi pošlete elektronickou poštou.

Odevzdat do 30. listopadu 2019

Vytvoření DTD a validace

Pro soubor knihy.xml vytvořte DTD definující příslušný jazyk. (Atribut isbn je povinný, autor je alespoň jeden, vydavatel a rok vydání jsou nepovinné.) Ověřte správnost programem xmllint.

XML Schema

Pro soubor knihy.xml z předchozího cvičení vytvořte XML Schema definici příslušného jazyka. Zkuste ji vytvořit ve třech alternativách vycházejících z různých přístupů k sestavování XML schémat. Ověřte správnost programem xmllint.

Relax NG

Navrhněte pomocí Relax NG schéma pro jazyk popisující vektorové obrázky. Obrázek (prvek obrazek) je seznam jednotlivých grafických prvků, jejich počet v obrázku je libovolný.

Grafické prvky jsou různých typů:

  • usecka
  • obdelnik
  • kruh

Všechny tři typy prvků mají několik položek společných:

  • povinný atribut id
  • informaci o barvě (barva) s nepovinným atributem system s přípustnými hodnotami "rgb", "cmyk" a "bw"
  • prvek cara udávající tloušťku čáry, jíž má být vykreslen
  • prvek kotva definuje kotevní bod, konkrétně jeho souřadnice x a y
  • nepovinný prvek pruhlednost udávající míru průhlednosti daného prvku

Další obsah prvku závisí na jeho typu:

  • obdélník nese informace o šířce a výšce
  • kruh o poloměru
  • úsečka o jejím druhém koncovém bodu

Příklad dokumentu v tomto jazyce. Použijte xmllint k ověření správnosti.

Odevzdat do 19. ledna 2020

XSLT, 1. úloha

Vytvořte XSLT předpis, kterým soubor uzivatele.xml převedete na HTML stránku s následujícím obsahem (adresy webových stránek jednotlivých uživatelů se generují z uživatelských jmen):

<html>
<head><title>Seznam uzivatelu</title></head>
<body>
<h1>Seznam uzivatelu</h1>
<dl>
<dt><strong>mail</strong></dt>
<dd>shell: /sbin/nologin<br/>
    web: <a href="/~mail">/~mail</a>
</dd>
...
</dl>
</body>
</html>
XSLT, 2. úloha

Vytvořte XSLT předpis, kterým ze souboru osoby.xml vypíšete v textové podobě osoby kategorie sluzba. Každá osoba bude uvedena na samostatném řádku, který bude obsahovat její identifikátor následovaný jménem. Řádky seřaďte lexikograficky podle identifikátorů.