Zk 14.06.2007

yayo
Matfyz(ák|ačka) level II
Příspěvky: 61
Registrován: 5. 12. 2004 11:55
Typ studia: Informatika Bc.
Bydliště: Troja
Kontaktovat uživatele:

Zk 14.06.2007

Příspěvek od yayo »

tak skusim dat dokopy nejaku kostru pisomky.. bola takmer cisto prakticka..
1.

Kód: Vybrat vše

   <?xml version="1.0" encoding="windows-1250"?>
   <xsl:stylesheet version="1.0">
     <xsl:output method="xml" />
     <xsl:template match="zamestnanec">
       <<xsl:copy-of select="jmeno">
     </xsl:template>
   </xsl:stylesheet>     
tak nejak..
a) je to well-formed xml
b) nejaka blbost
c) transformuje do HTML..
d) transformuje do XML jako zoznam mien - nejak tak, ale bolo to spravne..

2. <element/>: dva sposoby ako zapisat v XML Schema, aby toto tam preslo..

3. skrateny zapis XPath - 6 prikladov typu
a) descendant::autor[position()=1] (.//autor[1])
b) /descendant::autor[position()=1] (//autor[1])
c) descendant::kniha[attribute(jazyk)="angl"] (.//kniha[@jazyk="angl"])
d) descendant::kniha[attribute(jazyk)!="angl"] (.//kniha[@jazyk@!="angl"])
e) (child::bib/descendant::kniha)[position()=1] ((bib//kniha)[1])
f) nejaky strasne dlhy nezrozumitelny dotaz

4. to co uz niekde bolo template ci sa pise s match, if alebo when.. (spravne match)

5. uz tiez bola, xpath dotaz s knihou -> spravny dotaz /kniha/kapitola[1]/nadpis/preceding::* a vyznacit na obrazku

6. XQuery dotazy - jednoduchy -> vybrat knihy z dokumentu a k nim pocet kapitol..
zlozitejsi -> mame druhy subor s recenziami.. na jednu knizku moze byt v 0 az n recenzii a mame vybrat titul, autora knizky a k tomu vsetky texty recenzii cize pre jednu knizku to malo vyzerat

Kód: Vybrat vše

<recenze_knihy>
 <titul>Janko Hrasko</titul>
 <autor>ludova</autor>
 <text>prvej rezencia</text>
 <text>druha rezencia</text>
 <text>tretia rezencia</text>
</recenze_knihy>
ak recenzia na knizku neexistovala, tak tam element recenze knihy nebol..

DTD suboru recenze.xml
<!ELEMENT recenze (zaznam)*>
<!ELEMENT zaznam (titul, cena, text)>
titul,cena,text - PCDATA

dotaz, ktory mi uznali. neviem, ci je syntakticky spravne:

Kód: Vybrat vše

 for $kniha in doc('kniha.xml')
 let $nazev := doc('recenze.xml')/recenze/zaznam/titul[.=$kniha/nazev]
 if (exists($nazev))
 return
 {
  <rezenze_knihy>
   <titul>{$kniha/nazev}</titul>
   <autor>{$kniha/autor}</autor>
   {
    for $zaznam in doc('rezenze.xml')/rezenze/zaznam
    where $zaznam/titul = $kniha/nazev
    return
    {
     <text>{$zaznam/text}</text>
    }
   }
  </rezenze_knihy>
 }

7. otazka ktora uz bola.. Xpath 2 podmnozinou xquery 1, xquery sa daju vytvarat vlastne funkcie...


tak snad pomoze, kto by mal presnejsie zadania, nech to sem da..

edit: doplneny dotaz v XQuery
Naposledy upravil(a) yayo dne 14. 6. 2007 16:34, celkem upraveno 1 x.
johnny
Donátor
Donátor
Příspěvky: 95
Registrován: 13. 12. 2005 00:31
Typ studia: Informatika Mgr.
Bydliště: Trója

Příspěvek od johnny »

Ještě tam byla otázka na přepis DTD co nejpřesněji do XML Schema, ale bez použití typu atributů ID/IDREFS. To DTD bylo přibližně toto:

Kód: Vybrat vše

<!ELEMENT firma (zamestnanec+)>
<!ELEMENT zamestnanec EMPTY>
<!ATTLIST zamestnanec 
  id ID #REQUIRED
  nadrizeny IDREF #IMPLIED>
U XQuery bylo potřeba znát, jak se v XQuery používá "if".

Máte už někdo nějakou známku? Je 14:30, výsledky tam měly být po 11:30, v SISu pořád nic nemám, na vyhlášení u Pokorného jsem nebyl.
honzik123
Matfyz(ák|ačka) level I
Příspěvky: 18
Registrován: 20. 1. 2006 19:43

Příspěvek od honzik123 »

Ja jsem dostal za 2. Ze zacatku se mi to zdalo dosti tezke, ale kdyz se nad tim clovek zamyslel, tak to je hracka...
Jinak Pokorny rikal, ze znamky budou v SISu az zitra.
@tiMan
Matfyz(ák|ačka) level I
Příspěvky: 16
Registrován: 22. 6. 2006 16:05
Typ studia: Informatika Bc.

Příspěvek od @tiMan »

Mne sa zdal XPath v tej trojke nejak divny...Vsade tam bola osa descendant. Pokial dobre viem, // je zkratka za /descendant-OR-SELF::node()/ a nie len pre descendant. Cize ja som tam dal vsade este */, aby som preskocil jednu uroven a zacal o jednu nizsie - aby som vynechal uzol samotny, kedze tam nebol ten self.
Tymto som stratil 3 body :? No stale neviem, preco bolo moje riesenie zle.
yayo
Matfyz(ák|ačka) level II
Příspěvky: 61
Registrován: 5. 12. 2004 11:55
Typ studia: Informatika Bc.
Bydliště: Troja
Kontaktovat uživatele:

Příspěvek od yayo »

tiez neviem, preco bolo tvoje zle, ale napr. descendant::autor som prepisal na .//autor a bolo to spravne..

edit: dve lomitka som tam mal
Naposledy upravil(a) yayo dne 14. 6. 2007 16:23, celkem upraveno 1 x.
honzik123
Matfyz(ák|ačka) level I
Příspěvky: 18
Registrován: 20. 1. 2006 19:43

Příspěvek od honzik123 »

Zkusim napsat, jak jsem to udelal ja a jak to chapu/nechapu, kdyztak me prosim nekdo opravte.
Asi nejdulezitejsi je rozmyslet si co znamena x::y, je to ve slidech...

descendant::autor[position()=1]
znamena, vem vsechny descendent (nasledniky) od aktualniho kontextu (nebylo tam lomitko na zacatku, tak je to ten aktualni kontext), z nich vyber elementy autor a nakonec vyber toho prvniho
tedy: . znamena self, tedy od aktualniho kontextu, potom .//autor je od aktualniho kontextu libovolneho autora a nakonec pridat index (.//autor[1])

/descendant::autor[position()=1]
Tady je to podobne, akorat / rika, ze zaciname hned od vrchu stromu, tedy od vrcholu stromu najdem vsechny nasledniky, ktere jsou autor, to se snadno udela //autor, k tomu uz staci jen pridat index a je to...
(//autor[1])

Vsechny dalsi jsou uz jen lehke upraveniny :)
@tiMan
Matfyz(ák|ačka) level I
Příspěvky: 16
Registrován: 22. 6. 2006 16:05
Typ studia: Informatika Bc.

Příspěvek od @tiMan »

honzik123 píše:descendant::autor[position()=1]
znamena, vem vsechny descendent (nasledniky) od aktualniho kontextu (nebylo tam lomitko na zacatku, tak je to ten aktualni kontext), z nich vyber elementy autor a nakonec vyber toho prvniho
tedy: . znamena self, tedy od aktualniho kontextu, potom .//autor je od aktualniho kontextu libovolneho autora a nakonec pridat index (.//autor[1])
To vsetko ja chapem, mam problem len s tym, ze descendent (potomci) su bez toho kontextoveho uzlu - striktne pod. Tvoje riesenie pocita i s kontextovym uzlom, ze? Cize od aktualneho kontextu vcetne. Ale je dost dobre mozne, ze sa mylim...
johnny
Donátor
Donátor
Příspěvky: 95
Registrován: 13. 12. 2005 00:31
Typ studia: Informatika Mgr.
Bydliště: Trója

Příspěvek od johnny »

Na téhle stránce se to chová takhle:
1) /AAA/descendant-or-self::* - vybere vše, včetně kořene AAA
2) /AAA/descendant::* - vybere vše, kromě kořene AAA
3) /AAA//* - stejně jako 2)

// je sice /descendant-or-self/, ale
//X je /descendant-or-self/child::X

Trvalo mi dost dlouho, než mi tohle došlo a když jsem jel ze zkoušky, tak mně taky napadlo, že tam měla být ta část s "/*/". Nevím, jestli to je teď po tomhle příspěvku jasnější :D
@tiMan
Matfyz(ák|ačka) level I
Příspěvky: 16
Registrován: 22. 6. 2006 16:05
Typ studia: Informatika Bc.

Příspěvek od @tiMan »

johnny píše:Trvalo mi dost dlouho, než mi tohle došlo a když jsem jel ze zkoušky, tak mně taky napadlo, že tam měla být ta část s "/*/". Nevím, jestli to je teď po tomhle příspěvku jasnější :D
Ale je, diky moc, aspon mam lepsi pocit, ze som to asi fakt nemal uplne dobre. No bolo zaujimave, ze za tento priklad bolo 6 bodov, co predstavuje rozdiel i troch znamok vo vysledku.
stinny
Matfyz(ák|ačka) level I
Příspěvky: 42
Registrován: 23. 1. 2007 15:23

Příspěvek od stinny »

A jake bylo bodovani jednotlivych prikladu? A znamkovani?
yayo
Matfyz(ák|ačka) level II
Příspěvky: 61
Registrován: 5. 12. 2004 11:55
Typ studia: Informatika Bc.
Bydliště: Troja
Kontaktovat uživatele:

Příspěvek od yayo »

myslim, ze znamkovanie bolo
22-19 = 1
18-17 = 2 ??
16-15 = 3 ?????

bodovanie (podla mojho cislovania prikladov)
1. [2]
2. [2]
3. [6]
4. [1]
5. [1]
6. [2], [3]
7. [2]
otazka doplnena johnnym [3]

priblizne takto.. nech ma niekto opravi..
Uživatelský avatar
Trupik
Matfyz(ák|ačka) level III
Příspěvky: 251
Registrován: 3. 1. 2005 14:45
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Příspěvek od Trupik »

kolik je na písemku času?
Domovská stránka: http://www.jakubmaly.cz/, blog: http://blog.jakubmaly.cz/
Petice proti olympiádě http://olympiada.nazory.cz

Come on you target for faraway laughter,
Come on you stranger, you legend, you martyr, and shine!
johnny
Donátor
Donátor
Příspěvky: 95
Registrován: 13. 12. 2005 00:31
Typ studia: Informatika Mgr.
Bydliště: Trója

Příspěvek od johnny »

Hodina a půl.
Odpovědět

Zpět na „PRG036 Technologie XML“