ZH megoldások
1.) rakd NÖVEKVŐ sorrendbe specifikációjuk szereint a következőket!
(2) h1 + p (4) #main > p (1) * (3) p.warning /* A '*' minden elemre illeszkedik, ezért: a=b=c=d=0; 'h1' és 'p' is elemnév, ezért a=b=c=0 d=2; 'p' elemnév, a '.warning' egy pszeudoosztály, ezért: a=b=0, c=d=1; '#main' egy id, 'p' egy elemnév, ezért a=0, b=1, c=0, d=1 */
2.) mi a specifikussága a 'div#nav > ul.menu' -nek?
div - elemnév -> d=1
#nav - id -> b=1
ul - elemnév ->d=1 (plusz az előző 1, tehát d=2)
.menu - pszeudoosztály(class) -> c=1
Tehát a specifikusság: a=0, b=1, c=1, d=2
Másik zh-ból ami beugratós:
.div#p >ul.menu specifikusság: a=0, b=1, c=2, d=1 /* .div-> c=1, #p ->b=1, ul -> d=1, .menu->c=1 (plusz ami előtte volt c, tehát c=2 */
3.) Specifikusság 'h2:first-child + p[dir=rtl]'
a=0, b=0, c=2, d=2
4.) milyen színű lesz? HA VAN STYLE=...AKKOR TUTI HOGY AZ FOG GYŐZNI, BÁRHOL VAN!!!! =) (ha nincs, értelemszerűen, amelyik specifikusága a legerősebb)
5.) az xml valahogy így nézett ki:
Melyik illeszekdik a li elemre?
válasz: #toc li:first-child (a toc id-jű elem leszármazottja, ami li és első gyermek)
6.) ki kellett választani a gyakvezetőt...Fülinél: oktató[beosztás] + oktató /* azaz olyan oktató nevű tag, aminek van beosztás attribútuma, és az ő közvetlen szomszédja (a + jel miatt)
7.) külön képen
8.) külön képen
XPATH-os feladatok: (az xml-t sajnos nem tudom leírni, de szerintem ígyis meg lehet érteni)
1.)Futurana című rajzfilm azonosítóját visszaadó XPath kifejezés:
//rajzfilm[cím="Futurana"]/@id /* id-ra @ jellel hivatkozunk...tehát: pl: akkor: @azonosíto */
2.)Milyen hosszú az SP azonosítójú rajzfilm?
//rajzfilm[@id="SP"]/hossz
3.) Melyek azok a rajzfilmek, melyekben a Pigeon karakterből 3 db szerepel? (a karakter db-számát külön tag adja meg )
//karakter[.="Pigeon" and @darab="3"]/../cím
/* a . az aktuális elem tartalmára vonatkozik, a .. az adott elem szülőjét jelképezi (a rajzfilm tagben volt a cím, és a karakter is, tehát ha a címet akarom megkapni, akkor, mivel a jelenlegi tag a karakter (//karakter), ezért a szülőjébe, a rajzfilmbe kell menni, és onnan már a címet ki tudjuk választani */
4.) Összes különböző alkotó
//alkotó[not[.=preceeding::alkotó]] /* ezt lehet following-gal is */
5.) Hány olyan rajzfilm van, amelyben van Kutya vagy Robot karakter?
count(//rajzfilm[karakter="Kutya" or karakter="Robot"])
6.)Hány különböző karakter van összesen?
count(//karakter[not(.=preceeding::karakter)])
7.) Az utolsó rajzfilmben hányféle karakter szerepel?
count(//rajzfilm[last()]/karakter)
8.) Rajzfilm, ahol nem szerepel a Robot karakter
//rajzfilm[not(karakter="Robot")]/cím
9.) Van-e 30 percnél hosszabb Seth Green által készített rajzfilm? /*Logikai kifejezést kell, hogy visszaadjon! Nem kell semmit kiírattatni, mint az előzőnél, hogy /cím */
//rajzfilm[alkoto="Seth Green"]/hossz > 30
10.) Az első olyan rajzfilm címe, ami 20 percnél hosszabb és szerepel benne a Rozsomák karakter
//rajzfilm[karakter="Rozsomák" and hossz > 20][1]/cím /*az [1] jelenti az elsőt, olyan mintha csak ezt írnám: //rajzfilm[1], csak még van előtte*/
11.) Mi a címe az XM azonosítójú rajzfilmet KÖZVETLENÜL MEGELŐZŐ rajzfilmnek?
//rajzfilm[following::rajzfilm[1]/@id="XM"] /* az a rajzfilm, ami után közvetlenül ([1]) az XM azonosítójú rajzfilm jön */
VAGY:
//rajzfilm[id="XM"]/preceeding::rajzfilm[1]/cím /*kiválasztjuk az XM azonosítójú rajzfilmet, és ami közvetlenül ([1]) megelőzi*/
12.) Összesen hány olyan karakter van, amely csak egy rajzflmben szerepel?
count(//karakter[not(.=preceeding::karakter) and not(.=following::karakter)])
Másik ZH-ból egy példa (sum függvényre):
Összesen hány elemet tartalmaznak a Star Wars témájú készletek?
sum(//készlet[téma="Star Wars"]/elemek.szama)