Informatički praktikum 4

Raniji naziv predmeta: Struktura informacija (vežbe)

Obaveštenja

[7. III 2024, 20:27] Od školske 2022/2023. godine pa nadalje se pretpostavlja da svi studenti koji ponovo slušaju neki od informatičkih predmeta zadržavaju ranije ostvarene predispitne obaveze (PO) i ne treba da se javljaju predmetnom nastavniku da bi to potvrdili. Samo studenti koji ne žele da zadrže neke ili sve PO, već im je namera da ponove određeni test ili seminarski rad, moraju da se jave na adresu misko at fil_bg_ac_rs do 15. III 2024. godine i precizno naznače šta od PO ponavljaju.

Osnovne informacije

Nastavni plan i program

Literatura:

  1. Miloš Utvić. Materijali za predmet IP4:
  2. Krstev, Cvetana. Materijali za predmet Informatički praktikum 4
    • Obeležavanje teksta i XML (MATF)
  3. Branislava Šandrih Todorović. Materijali za predmet Informatički praktikum 4
  4. w3schools Tutorials
  5. BibTeX — format elektronske bibliografije.

Predispitne obaveze

  • Test (15 poena)
    • Termin: Raspored testova i rezultati testova
    • Gradivo:
      • XML. Terminologija (etikete, elementi, korenski element, prazan element, atributi). Dobro formirani XML. Validan XML. DTD-šema (spoljašnja, unutrašnja, kombinovana). Entiteti (karakterski, parametarski, opšti)
      • Regularni izrazi (na testu se mogu koristiti sledeće 'puškice'):
        1. Karakteri i metakarakteri.
        2. Dopisivanje (konkatenacija).
        3. Alternacija (unija) i karakterske klase.
        4. Kvantifikatori (Klinijevo zatvorenje, pozitivno Klinijevo zatvorenje, neobavezno pojavljivanje, ponavljanje pojavljivanja u određenom opsegu).
        5. Grupisanje.
  • Seminarski rad

Ispit

  • Pismeni ispit (min. 20 poena, maks. 50 poena)
    • Gradivo:
      • XML Schema: definicija tipova, deklaracija elemenata jednostavnog i složenog tipa. Na ispitu se mogu koristiti sledeće puškice.
      • Regularni izrazi.
      • Opis bibliografske jedinice u formatu BibTeX. Korišćenje bibliografije u formatu BibTeX u okviru LaTeX-dokumenta (komande za uvoz bibliografije, izbor bibliografskog stila i citiranje).
      • Izrada specifikacije zadatog XML dokumenta pomoću DTD-šeme.

Predavanja i vežbe

Neophodni programi i resursi

  • Za rad su potrebni sledeći programi i resursi:

Rad na vežbama

  • Ukoliko katalog C:\g3\ip4 ne postoji, student je dužan da ga kreira. U taj katalog student snima sve datoteke koje kreira tokom vežbi.
  • Na početku svakog časa, u okviru kog se obrađuje XML, DTD ili XML Schema, studenti pokreću XML Copy Editor i taj program je aktivan sve vreme.

(2 časa)

BibTeX format za obeležavanje bibliografije

  • Tipovi bibliografskih jedinica (engl. BibTeX entry types). Najvažniji primeri:
    • @article (članak u časopisu)
    • @incollection i @inproceedings (poglavlje u tematskom zborniku, rad u zborniku)
    • @book (knjiga)
    • @mastersthesis (master rad)
    • @phdthesis (doktorska disertacija)
    • @misc (razno)
  • Polja bibliografske jedinice mogu biti obavezna i opciona, a neka su i specifična za određeni tip bibliografske jedinice (za članak se praktično nikad ne navodi izdavač, dok je naziv časopisa obavezan; za rad u zborniku nema smisla navoditi naziv časopisa, naslov zbornika je obavezno polje, a izdavač i njegova adresa neobavezna polja).
    • @article. Obavezna polja: author (autori članka), title (naslov članka), journal (naziv časopisa), year (godina izdanja). Neobavezna polja: volume (godište), number (redni broj sveske), pages (paginacija), month (mesec izdanja), note (napomena), issn (ISSN časopisa).
    • @incollection, @inproceedings. Obavezna polja: author (autori rada u zborniku), title (naslov rada u zborniku), booktitle (naslov zbornika), year (godina izdanja). Neobavezna polja: editor (urednici zbornika), volume (godište), number (redni broj toma zbornika), pages (paginacija), month (mesec izdanja), note (napomena), publisher (naziv izdavača), address (adresa izdavača), series (naziv serijske publikacije), issn (ISSN serijske publikacije), isbn (ISBN zbornika). Tip @incollection još ima neobavezna polja chapter (redni broj poglavlja u tematskom zborniku), edition (redni broj izdanja zbornika). Polje publisher (naziv izdavača) je obavezno za @incollection, ali ne i za @inproceedings (?!).
    • @book. Obavezna polja: title (naslov knjige), publisher (naziv izdavača), year (godina izdanja). Neobavezna polja: author (autori knjige), editor (urednici zbornika), volume (godište), number (redni broj toma zbornika), pages (broj strana), month (mesec izdanja), note (napomena), publisher (naziv izdavač), address (adresa izdavača), series (naziv serijske publikacije), issn (ISSN serijske publikacije), isbn (ISBN zbornika), edition (redni broj izdanja knjige).
    • Primer bibliografije u formatu BibTeX: bibliogr.bib
  • Svaka bibliografska jedinica mora imati jedinstven identifikator, BibTeX ključ (engl. BibTeX key), koji se koristi prilikom citiranja te jedinice umesto navođenja svih njenih polja.

Citiranje bibliografskih unosa u dokumentima kreiranim LaTeX sistemom

  • Kompletan primer kao arhiva bibtex-primer.zip (clanak.tex, bibliogr.bib i PDF-verzije istog dokumenta sa različitim stilovima citiranja)
  • Komanda za citiranje bibliografske jedinice u LaTeX-dokumentu: \cite{bibtex_ključ}. Primer LaTeX-dokumenta sa citiranjem bibliografske jedinice: clanak.tex
  • Komanda za izbor stila citiranja: \bibliographystyle{stil}. Rezultati primene nekih bibliografskih stilova citiranja nad istim dokumetom sa istom bibliografijom: plain, alpha, apalike, siam, ieeetr, acm.

(2 časa)

Regularni izrazi

(1 čas)

Uvod u XML

  • Osnovna namena
  • Osnovni pojmovi: etiketa (engl. tag), atribut (engl. attribute), element (engl. element)
  • Komentari (engl. comments). Instrukcije za obradu (engl. processing instructions). XML deklaracija (engl. XML declaration)
  • Dobro formiran XML dokument (engl. well-formed XML document). Korenski element (engl. root element)
  • Primer: prva verzija fiskalnog računa racun.xml. XML datoteka (.xml) se može pogledati u veb čitaču (engl. browser), ali je čitač prikazuje ulepšanu (u boji, sa razrešenim karakterskim entitetima i sa mogućnošću da se sadržaj pojedinih elemenata sakrije ili prikaže klikom na - i + ispred otvorene etikete elementa). Potrebno je aktivirati opciju View Source (prečica Ctrl+U) da bi se video sadržaj XML datoteke kao običan tekst.
  • Drvo kao grafički prikaz XML dokumenta na primeru fiskalnog računa xmlDrvo-racun.png. Tipovi čvorova:
    • korenski čvor ili čvor celog dokumenta (ne mešati ga sa čvorom korenskog elementa!)
    • čvorovi koji odgovaraju elementima (elementski čvorovi)
    • čvorovi koji odgovaraju atributima (atributski čvorovi)
    • čvorovi koji odgovaraju tekstualnom sadržaju elemenata (tekstualni čvorovi)
    • čvorovi koji odgovaraju instrukcijama obrade
    • čvorovi koji odgovaraju komentarima
    • čvorovi koji odgovaraju prostorima imena

(3 časa)

Sadržaj XML elemenata

DTD

  • Definicija tipa dokumenta (Document Type Definition, DTD). Validan XML dokument (engl. valid XML document). DTD datoteka (.dtd) se ne može pogledati u veb čitaču (engl. browser), već je treba preuzeti i pogledati korišćenjem nekog uređivača teksta (engl. text editor) poput programa Notepad++ ili videti tekstuelnu verziju (_dtd.txt)
  • Spoljašnji DTD (engl. external DTD). Atribut standalone u XML deklaraciji
  • Deklaracija elemenata

Modeli sadržaja (engl. content models)

Uputstvo za I domaći

U okviru samostalnog rada kod kuće, student treba da napravi datoteku recnik.dtd koja (kao spoljašnji DTD) opisuje strukturu XML dokumenta recnik.xml. XML dokument predstavlja rečnik kao niz odrednica, od kojih svaka obavezno sadrzi kanonski oblik (lemu), vrstu reči (imenica, glagol, pridev itd), i bar jedno značenje. Svako značenje obavezno sadrži opis i neobavezne primere (kojih može biti i više). U okviru svakog primera se obavezno navodi citat primera i referenca na odgovarajući izvor.

Posle kreiranja datoteke recnik.dtd, student treba da ubaci u prolog dokumenta recnik.xml referencu na taj spoljašnji DTD i da proveri da li je XML dokument validan u odnosu na taj DTD.

  • model mešovitog sadržaja (jedan jedini):
    (#PCDATA | element_dete1 | element_dete2 | … | element_deten)*.
    Primer [imejl adresa kao tekst]: mesovit.xml i odgovarajući DTD (preuzmite mesovit.dtd, pogledajte u veb čitaču mesovit_dtd.txt). #PCDATA uvek mora prvi da se navede!! Zvezdica je obavezna čak i u slučaju da se deca pojavljuju jednom!!
  • Primer: treća verzija fiskalnog računa racun3.xml i odgovarajući DTD (preuzmite racun3.dtd, pogledajte u veb čitaču racun3_dtd.txt).

Atributi

Entiteti

  • Karakterski entiteti
  • Parametarski entiteti
  • Primer: DTD za pismo (preuzmite pismo.dtd, pogledajte u veb čitaču pismo_dtd.txt), parametarski entitet opisuje zajedničku strukturu sadržaja (ime, prezime, adresu) pošiljaoca i primaoca pisma.

Unutrašnji DTD

  • Parametarski entiteti se ne smeju koristiti u okviru unutrašnjeg DTD-ja!!
  • Primer: verzija 3u fiskalnog računa racun3u.xml.
Uputstvo za II domaći

U okviru samostalnog rada kod kuće, student treba na osnovu tekstuelne datoteke pismo.txt (pripremljene u kodnom rasporedu UTF-8) da kreira XML dokument pismo.xml koji je validan u odnosu na DTD pismo.dtd (pogledajte u veb čitaču pismo_dtd.txt).

Opšti entiteti

  • Unutrašnji entiteti
  • Primer: verzija 4 fiskalnog računa racun4.xml (veb čitač ne može da prikaže dokument jer ne zna da interpretira opšte entitete, zato, kada kliknete na link, koristite View Source, tj. Ctrl+U, kako biste videli sadržaj dokumenta; alternativa je da preuzmete XML datoteku i pogledajte u uređivaču teksta, Notepad++ ili XML Copy Editor). Opšti unutrašnji entitet (zahvalnost) je definisan u racun4.dtd (preuzmite racun4.dtd, pogledajte u veb čitaču racun4_dtd.txt). Ako se DTD ne prikazuje sa pravim kodnim rasporedom (UTF-8), iskoristite Repair Text Encoding (Firefox, meni View) ili preuzmite DTD, pa pogledajte u uređivaču teksta.
  • Primer: verzija 4u fiskalnog računa racun4u.xml Opšti unutrašnji entiteti (zahvalnost, prodavnica) su definisani u racun4u.dtd (preuzmite racun4u.dtd, pogledajte u veb čitaču racun4u_dtd.txt). Važe iste napomene za pregled u veb čitaču. Obratite pažnju da jedan entitet može da se koristi u okviru drugog, prethodno definisanog entiteta.
  • Spoljašnji entiteti
  • Primer: verzija 4s fiskalnog računa racun4s.xml. Opšti unutrašnji entitet (zahvalnost) je definisan u racun4s.dtd (preuzmite racun4s.dtd, pogledajte u veb čitaču racun4s_dtd.txt), kao i opšti spoljašnji entitet (prodavnica), ali je njegov sadržaj izdvojen u posebnu datoteku prodavnica.xml koja koristi prethodno definisani unutrašnji entitet (zahvalnost). Važe iste napomene za pregled u veb čitaču.
  • Javni identifikatori

(4 časa)

XML Schema (XSD)

XML šeme

DTD je primer XML šeme, tj. posebnog jezika za opis strukture XML dokumenta. Iako jednostavan, DTD ne nudi uvek dovoljno izražajan i precizan opis, pa su napravljene i alternativne XML šeme od kojih vredi spomenuti dve: XML Schema i RELAX NG. Ovde će biti objašnjena samo XML Schema.

Prednosti:

  • Opis strukture XML dokumenta koji nudi XML Schema je takođe XML dokument, pa se istim sredstvima mogu obrađivati i validirati i dokument i njegov opis strukture za razliku od DTD-ja.
  • XML Schema nudi obiman skup ugrađenih tipova podataka za opis sadržaja i atributa, kao i mogućnost kreiranja novih, prilagođenih tipova, sužavanjem (restrikcijom) ili proširivanjem (ekstenzijom) postojećih.

Opis strukture XML dokumenta koji pruža XML Schema koristi tip datoteke .xsd (a ne .xml iako je u pitanju takođe XML dokument) kao skraćenica od engleskog XML Schema Definition. Tako se akronim XSD koristi i kao skraćeno ime za neki konkretan primerak opisa strukture XML dokumenta u datoteci .xsd, odnosno za sam jezik XML Schema.

Najvažniji ugrađeni tipovi podataka su opisani u XML Schema — puškicama

Primeri ugrađenih tipova podataka

  • imejl adresa kao običan tekst

Prostori imena

Koriste se kako bi se omogućilo da različiti jezici opisani XML-om, odnosno skupovi odgovarajućih etiketa (označimo ih L1 i L2), koriste elemente i etikete sa istim imenom i različitim značenjem, tako da, u slučaju da je potrebno koristiti etikete iz L1 i L2 istovremeno u istom XML dokumentu, ne dođe do nesporazuma u pogledu značenja elemenata, odnosno etiketa.

U tu svrhu se svakom od jezika L1 i L2 može pridružiti jedinstven URL (označimo ih U1 i U2) koji nadalje identifikuje odgovarajući jezik, odnosno skup etiketa. Pošto takav URL faktički ograđuje (odvaja) određen skup etiketa u odnosu na ostale skupove etiketa, naziva se (XML) prostor imena (engl. XML namespace.).

Međutim, kako je URL obično dugačak i nepraktičan za pisanje uz svaku etiketu, u XML dokumentu se obično definiše kratak nadimak (alias) koji nadalje zamenjuje prostor imena i koji se obavezno navodi u nazivu etikete kao prefiks, pri čemu se dve tačke (:) umeću kao separator između prefiksa i običnog imena etikete. Terminologija:

  • Prefiks koji menja prostor imena se naziva prefiks prostora imena (engl. namespace prefix).
  • Ime etikete bez prefiksa prostora imena se naziva nekvalifikovano ime (engl. unqualified name).
  • Ime etikete sa prefiksom prostora imena se naziva kvalifikovano ime (engl. qualified name).

Na primer, sve etikete, odnosno elementi skupa (jezika) XML Schema pripadaju prostoru imena http://www.w3.org/2001/XMLSchema, ali se u praksi koristi xs: kao prefiks koji menja taj URL. XML Schema koristi korenski element xs:schema, pri čemu je xs:schema kvalifikovano ime tog elementa, a schema odgovarajuće nekvalifikovano ime.

Prefiks prostora imena se definiše unutar otvorene etikete korenskog elementa tako što se uvodi poseban atribut čija je vrednost prostor imena, odnosno URL. Ime atributa se formira od obaveznog prefiksa xmlns (skr. od xml namespace) i naziva prefiksa koji se definiše. Konkretno, u slučaju xs: kao prefiksa prostora imena http://www.w3.org/2001/XMLSchema, odgovarajuća definicija bi bila:

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>

Umesto xs: možemo koristiti bilo koji slobodni prefiks kao zamenu za prostor imena http://www.w3.org/2001/XMLSchema primenom slične definicije. Međutim, pošto se u praksi i literaturi xs: najčešće koristi kao prefiks za pomenuti prostor imena, tako ćemo i mi postupati.

Povezivanje XML dokumenta sa odgovarajućom XSD šemom

XML dokument se povezuje sa odgovarajućom XSD šemom pomoću jednog od dva atributa xsi:schemaLocation ili xsi:noNamespaceSchemaLocation, pri čemu je xsi: (najčešći) prefiks prostora imena http://www.w3.org/2001/XMLSchema-instance. U pitanju je drugačiji prostor imena od onog koji koriste elementi i etikete jezika XML Schema, pa otuda i drugačiji prefiks xsi:. Takođe, prostor imena koji odgovara prefiksu xsi: se koristi u primerku (instanci) XML dokumenta koji odgovara opisu datom u XML šemi, dok sama šema koristi prostor imena koji odgovara prefiksu xs:. Dakle, različiti prefiksi, različiti prostori imena, različita mesta gde se primenjuju.

S obzirom da je od dva pomenuta atributa xsi:noNamespaceSchemaLocation jednostavniji za korišćenje (ma koliko njegovo dugačko ime sugerisalo drugačije), dalje ćemo u svim primerima koristiti isključivo njega. Atribut se navodi u korenskom elementu XML dokumenta, gde se definiše i odgovarajući prefiks prostora imena (xsi:):

<email xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="text.xsd">pe_ra12@yahoo.com</email>

Vrednost atributa xsi:noNamespaceSchemaLocation je adresa XSD-šeme sa kojom se XML dokument povezuje. Adresa može biti apsolutna (URL) ili relativna u odnosu na katalog u kome se nalazi XML dokument. U svim narednim primerima pretpostavićemo da se XML dokument i njegova XSD-šema nalaze u istom katalogu, pa ćemo uvek koristiti relativnu adresu, tj. ime XSD-datoteke (u ovom primeru text.xsd).