Информатички практикум 4

Ранији назив предмета: Структура информација (вежбе)

Обавештења

[7. III 2024, 20:27] Од школске 2022/2023. године па надаље се претпоставља да сви студенти који поново слушају неки од информатичких предмета задржавају раније остварене предиспитне обавезе (ПО) и не треба да се јављају предметном наставнику да би то потврдили. Само студенти који не желе да задрже неке или све ПО, већ им је намера да понове одређени тест или семинарски рад, морају да се јаве на адресу misko at fil_bg_ac_rs до 15. III 2024. године и прецизно назначе шта од ПО понављају.

Основне информације

Наставни план и програм

Литература:

  1. Милош Утвић. Материјали за предмет ИП4:
  2. Krstev, Cvetana. Materijali za predmet Informatički praktikum 4
  3. Бранислава Шандрих Тодоровић. Материјали за предмет Информатички практикум 4
  4. w3schools Tutorials
  5. BibTeX — формат електронске библиографије.

Предиспитне обавезе

  • Тест (15 поена)
    • Термин: Распоред тестова и резултати тестова
    • Градиво:
      • XML. Терминологија (етикете, елементи, коренски елемент, празан елемент, атрибути). Добро формирани XML. Валидан XML. DTD-шема (спољашња, унутрашња, комбинована). Ентитети (карактерски, параметарски, општи)
      • Регуларни изрази (на тесту се могу користити следеће 'пушкице'):
        1. Карактери и метакарактери.
        2. Дописивање (конкатенација).
        3. Алтернација (унија) и карактерске класе.
        4. Квантификатори (Клинијево затворење, позитивно Клинијево затворење, необавезно појављивање, понављање појављивања у одређеном опсегу).
        5. Груписање.
  • Семинарски рад

Испит

  • Писмени испит (мин. 20 поена, макс. 50 поена)
    • Градиво:
      • XML Schema: дефиниција типова, декларација елемената једноставног и сложеног типа. На испиту се могу користити следеће пушкице.
      • Регуларни изрази.
      • Опис библиографске јединице у формату BibTeX. Коришћење библиографије у формату BibTeX у оквиру LaTeX-документа (команде за увоз библиографије, избор библиографског стила и цитирање).
      • Израда спецификације задатог XML документа помоћу DTD-шеме.

Предавања и вежбе

Неопходни програми и ресурси

  • За рад су потребни следећи програми и ресурси:
    • BibTeX
      1. TeXStudio (претходно инсталиран MikTeX)
      2. Overleaf — the collaborative, online LaTeX editor that anyone can use
      3. JabRef — табеларни програм за креирање електронских библиографија у формату BibTeX.
    • XML и регуларни изрази
      1. Notepad++.
      2. XML Tools — програмски додатак (plugin) за Notepad++ са упутством за инсталацију
      3. Xml Copy Editor — Download (Windows) са упутством за подешавање програма пре првог коришћења.
      4. Regex101: build, test and debug — онлајн програм за формирање, тестирање и анализу регуларних израза (аутор Firas Dib).

Рад на вежбама

  • Уколико каталог C:\g3\ip4 не постоји, студент је дужан да га креира. У тај каталог студент снима све датотеке које креира током вежби.
  • На почетку сваког часа, у оквиру ког се обрађује XML, DTD или XML Schema, студенти покрећу XML Copy Editor и тај програм је активан све време.

(2 часа)

BibTeX формат за обележавање библиографије

  • Типови библиографских јединица (енгл. BibTeX entry types). Најважнији примери:
    • @article (чланак у часопису)
    • @incollection и @inproceedings (поглавље у тематском зборнику, рад у зборнику)
    • @book (књига)
    • @mastersthesis (мастер рад)
    • @phdthesis (докторска дисертација)
    • @misc (разно)
  • Поља библиографске јединице могу бити обавезна и опциона, а нека су и специфична за одређени тип библиографске јединице (за чланак се практично никад не наводи издавач, док је назив часописа обавезан; за рад у зборнику нема смисла наводити назив часописа, наслов зборника је обавезно поље, а издавач и његова адреса необавезна поља).
    • @article. Обавезна поља: author (аутори чланка), title (наслов чланка), journal (назив часописа), year (година издања). Необавезна поља: volume (годиште), number (редни број свеске), pages (пагинација), month (месец издања), note (напомена), issn (ISSN часописа).
    • @incollection, @inproceedings. Обавезна поља: author (аутори рада у зборнику), title (наслов рада у зборнику), booktitle (наслов зборника), year (година издања). Необавезна поља: editor (уредници зборника), volume (годиште), number (редни број тома зборника), pages (пагинација), month (месец издања), note (напомена), publisher (назив издавача), address (адреса издавача), series (назив серијске публикације), issn (ISSN серијске публикације), isbn (ISBN зборника). Тип @incollection још има необавезна поља chapter (редни број поглавља у тематском зборнику), edition (редни број издања зборника). Поље publisher (назив издавача) је обавезно за @incollection, али не и за @inproceedings (?!).
    • @book. Обавезна поља: title (наслов књиге), publisher (назив издавача), year (година издања). Необавезна поља: author (аутори књиге), editor (уредници зборника), volume (годиште), number (редни број тома зборника), pages (број страна), month (месец издања), note (напомена), publisher (назив издавач), address (адреса издавача), series (назив серијске публикације), issn (ISSN серијске публикације), isbn (ISBN зборника), edition (редни број издања књиге).
    • Пример библиографије у формату BibTeX: bibliogr.bib
  • Свака библиографска јединица мора имати јединствен идентификатор, BibTeX кључ (енгл. BibTeX key), који се користи приликом цитирања те јединице уместо навођења свих њених поља.

Цитирање библиографских уноса у документима креираним LaTeX системом

  • Комплетан пример као архива bibtex-primer.zip (clanak.tex, bibliogr.bib и PDF-верзије истог документа са различитим стиловима цитирања)
  • Команда за цитирање библиографске јединице у LaTeX-документу: \cite{bibtex_ključ}. Пример LaTeX-документа са цитирањем библиографске јединице: clanak.tex
  • Команда за избор стила цитирања: \bibliographystyle{stil}. Резултати примене неких библиографских стилова цитирања над истим докуметом са истом библиографијом: plain, alpha, apalike, siam, ieeetr, acm.

(2 часа)

Регуларни изрази

(1 час)

Увод у XML

  • Основна намена
  • Основни појмови: етикета (енгл. tag), атрибут (енгл. attribute), елемент (енгл. element)
  • Коментари (енгл. comments). Инструкције за обраду (енгл. processing instructions). XML декларација (енгл. XML declaration)
  • Добро формиран XML документ (енгл. well-formed XML document). Коренски елемент (енгл. root element)
  • Пример: прва верзија фискалног рачуна racun.xml. XML датотека (.xml) се може погледати у веб читачу (енгл. browser), али је читач приказује улепшану (у боји, са разрешеним карактерским ентитетима и са могућношћу да се садржај појединих елемената сакрије или прикаже кликом на - и + испред отворене етикете елемента). Потребно је активирати опцију View Source (пречица Ctrl+U) да би се видео садржај XML датотеке као обичан текст.
  • Дрво као графички приказ XML документа на примеру фискалног рачуна xmlDrvo-racun.png. Типови чворова:
    • коренски чвор или чвор целог документа (не мешати га са чвором коренског елемента!)
    • чворови који одговарају елементима (елементски чворови)
    • чворови који одговарају атрибутима (атрибутски чворови)
    • чворови који одговарају текстуалном садржају елемената (текстуални чворови)
    • чворови који одговарају инструкцијама обраде
    • чворови који одговарају коментарима
    • чворови који одговарају просторима имена

(3 часa)

Садржај XML елемената

DTD

  • Дефиниција типа документа (Document Type Definition, DTD). Валидан XML документ (енгл. valid XML document). DTD датотека (.dtd) се не може погледати у веб читачу (енгл. browser), већ је треба преузети и погледати коришћењем неког уређивача текста (енгл. text editor) попут програма Notepad++ или видети текстуелну верзију (_dtd.txt)
  • Спољашњи DTD (енгл. external DTD). Атрибут standalone у XML декларацији
  • Декларација елемената

Модели садржаја (енгл. content models)

  • модел једноставног садржаја:
    • парсирани карактерски подаци: (#PCDATA). Пример [имејл адреса као текст]: text.xml и одговарајући DTD (преузмите text.dtd, погледајте у веб читачу text_dtd.txt)
    • елемент или низ елемената: (element_dete) или (element_dete1, element_dete2,… element_deten). Пример [имејл као низ (адреса, тема, порука)]: niz.xml и одговарајући DTD (преузмите niz.dtd, погледајте у веб читачу niz_dtd.txt)
    • избор између више елемената: (element_dete1 | element_dete2 | … | element_deten). Пример [број као римски или арапски]: choice1.xml и choice2.xml и њима одговарајући DTD (преузмите choice.dtd, погледајте у веб читачу choice_dtd.txt)
    • опциона и вишеструка појављивања елемената:
      • (element_dete?). Пример [чланак са обавезним насловом, необавезним сажетком и обавезним текстом]: optional1.xml и optional2.xml и њима одговарајући DTD (преузмите optional.dtd, погледајте у веб читачу optional_dtd.txt)
      • (element_dete*). Пример [роман са нула, једним или више аутора]: zeroOrMore1.xml, zeroOrMore2.xml и zeroOrMore3.xml и њима одговарајући DTD (преузмите zeroOrMore.dtd, погледајте у веб читачу zeroOrMore_dtd.txt)
      • (element_dete+). Пример [листа за куповину са једном или више ставки]: oneOrMore1.xml и oneOrMore2.xml и њима одговарајући DTD (преузмите oneOrMore.dtd, погледајте у веб читачу oneOrMore_dtd.txt)
      • комбиновање свега претходног (сем парсираних карактерских података). На пример:
        ((element_dete1*, element_dete2+) | (element_dete3, element_dete4?)).
        Пример [референца као (аутор*, наслов+) или као (ресурс, url?)]: kombinovano.xml и одговарајући DTD (преузмите kombinovano.dtd, погледајте у веб читачу kombinovano_dtd.txt)
    • Пример: друга верзија фискалног рачуна racun2.xml и одговарајући DTD (преузмите racun.dtd, погледајте у веб читачу racun_dtd.txt).
Упутство за I домаћи

У оквиру самосталног рада код куће, студент треба да направи датотеку recnik.dtd која (као спољашњи DTD) описује структуру XML документа recnik.xml. XML документ представља речник као низ одредница, од којих свака обавезно садрзи канонски облик (лему), врсту речи (именица, глагол, придев итд), и бар једно значење. Свако значење обавезно садржи опис и необавезне примере (којих може бити и више). У оквиру сваког примера се обавезно наводи цитат примера и референца на одговарајући извор.

После креирања датотеке recnik.dtd, студент треба да убаци у пролог документа recnik.xml референцу на тај спољашњи DTD и да провери да ли је XML документ валидан у односу на тај DTD.

  • модел мешовитог садржаја (један једини):
    (#PCDATA | element_dete1 | element_dete2 | … | element_deten)*.
    Пример [имејл адреса као текст]: mesovit.xml и одговарајући DTD (преузмите mesovit.dtd, погледајте у веб читачу mesovit_dtd.txt). #PCDATA увек мора први да се наведе!! Звездица је обавезна чак и у случају да се деца појављују једном!!
  • Пример: трећа верзија фискалног рачуна racun3.xml и одговарајући DTD (преузмите racun3.dtd, погледајте у веб читачу racun3_dtd.txt).

Атрибути

Ентитети

  • Карактерски ентитети
  • Параметарски ентитети
  • Пример: DTD за писмо (преузмите pismo.dtd, погледајте у веб читачу pismo_dtd.txt), параметарски ентитет описује заједничку структуру садржаја (име, презиме, адресу) пошиљаоца и примаоца писма.

Унутрашњи DTD

  • Параметарски ентитети се не смеју користити у оквиру унутрашњег DTD-jа!!
  • Пример: верзија 3у фискалног рачуна racun3u.xml.
Упутство за II домаћи

У оквиру самосталног рада код куће, студент треба на основу текстуелне датотеке pismo.txt (припремљене у кодном распореду UTF-8) да креира XML документ pismo.xml који је валидан у односу на DTD pismo.dtd (погледајте у веб читачу pismo_dtd.txt).

Општи ентитети

  • Унутрашњи ентитети
  • Пример: верзија 4 фискалног рачуна racun4.xml (веб читач не може да прикаже документ јер не зна да интерпретира опште ентитете, зато, када кликнете на линк, користите View Source, тј. Ctrl+U, како бисте видели садржај документа; алтернатива је да преузмете XML датотеку и погледајте у уређивачу текста, Notepad++ или XML Copy Editor). Општи унутрашњи ентитет (zahvalnost) је дефинисан у racun4.dtd (преузмите racun4.dtd, погледајте у веб читачу racun4_dtd.txt). Ако се DTD не приказује са правим кодним распоредом (UTF-8), искористите Repair Text Encoding (Firefox, мени View) или преузмите DTD, па погледајте у уређивачу текста.
  • Пример: верзија 4u фискалног рачуна racun4u.xml Општи унутрашњи ентитети (zahvalnost, prodavnica) су дефинисани у racun4u.dtd (преузмите racun4u.dtd, погледајте у веб читачу racun4u_dtd.txt). Важе исте напомене за преглед у веб читачу. Обратите пажњу да један ентитет може да се користи у оквиру другог, претходно дефинисаног ентитета.
  • Спољашњи ентитети
  • Пример: верзија 4s фискалног рачуна racun4s.xml. Општи унутрашњи ентитет (zahvalnost) је дефинисан у racun4s.dtd (преузмите racun4s.dtd, погледајте у веб читачу racun4s_dtd.txt), као и општи спољашњи ентитет (prodavnica), али је његов садржај издвојен у посебну датотеку prodavnica.xml која користи претходно дефинисани унутрашњи ентитет (zahvalnost). Важе исте напомене за преглед у веб читачу.
  • Јавни идентификатори

(4 часа)

XML Schema (XSD)

XML шеме

DTD је пример XML шеме, тј. посебног језика за опис структуре XML документа. Иако једноставан, DTD не нуди увек довољно изражајан и прецизан опис, па су направљене и алтернативне XML шеме од којих вреди споменути две: XML Schema и RELAX NG. Овде ће бити објашњена само XML Schema.

Предности:

  • Опис структуре XML документа који нуди XML Schema је такође XML документ, па се истим средствима могу обрађивати и валидирати и документ и његов опис структуре за разлику од DTD-ja.
  • XML Schema нуди обиман скуп уграђених типова података за опис садржаја и атрибута, као и могућност креирања нових, прилагођених типова, сужавањем (рестрикцијом) или проширивањем (екстензијом) постојећих.

Опис структуре XML документа који пружа XML Schema користи тип датотеке .xsd (а не .xml иако је у питању такође XML документ) као скраћеница од енглеског XML Schema Definition. Тако се акроним XSD користи и као скраћено име за неки конкретан примерак описа структуре XML документа у датотеци .xsd, односно за сам језик XML Schema.

Најважнији уграђени типови података су описани у XML Schema — пушкицама

Примери уграђених типова података

  • имејл адреса као обичан текст
    • Пример XML документа: text.xml
    • Одговарајућа XML шема: text.xsd

Простори имена

Користе се како би се омогућило да различити језици описани XML-ом, односно скупови одговарајућих етикета (означимо их L1 и L2), користе елементе и етикете са истим именом и различитим значењем, тако да, у случају да је потребно користити етикете из L1 и L2 истовремено у истом XML документу, не дође до неспоразума у погледу значења елемената, односно етикета.

У ту сврху се сваком од језика L1 и L2 може придружити јединствен URL (означимо их U1 и U2) који надаље идентификује одговарајући језик, односно скуп етикета. Пошто такав URL фактички ограђује (одваја) одређен скуп етикета у односу на остале скупове етикета, назива се (XML) простор имена (енгл. XML namespace.).

Међутим, како је URL обично дугачак и непрактичан за писање уз сваку етикету, у XML документу се обично дефинише кратак надимак (алиас) који надаље замењује простор имена и који се обавезно наводи у називу етикете као префикс, при чему се две тачке (:) умећу као сепаратор између префикса и обичног имена етикете. Терминологија:

  • Префикс који мења простор имена се назива префикс простора имена (енгл. namespace prefix).
  • Име етикете без префикса простора имена се назива неквалификовано име (енгл. unqualified name).
  • Име етикете са префиксом простора имена се назива квалификовано име (енгл. qualified name).

На пример, све етикете, односно елементи скупа (језика) XML Schema припадају простору имена http://www.w3.org/2001/XMLSchema, али се у пракси користи xs: као префикс који мења тај URL. XML Schema користи коренски елемент xs:schema, при чему је xs:schema квалификовано име тог елемента, а schema одговарајуће неквалификовано име.

Префикс простора имена се дефинише унутар отворене етикете коренског елемента тако што се уводи посебан атрибут чија је вредност простор имена, односно URL. Име атрибута се формира од обавезног префикса xmlns (скр. од xml namespace) и назива префикса који се дефинише. Конкретно, у случају xs: као префикса простора имена http://www.w3.org/2001/XMLSchema, одговарајућа дефиниција би била:

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

Уместо xs: можемо користити било који слободни префикс као замену за простор имена http://www.w3.org/2001/XMLSchema применом сличне дефиниције. Међутим, пошто се у пракси и литератури xs: најчешће користи као префикс за поменути простор имена, тако ћемо и ми поступати.

Повезивање XML документа са одговарајућом XSD шемом

XML документ се повезује са одговарајућом XSD шемом помоћу једног од два атрибута xsi:schemaLocation или xsi:noNamespaceSchemaLocation, при чему је xsi: (најчешћи) префикс простора имена http://www.w3.org/2001/XMLSchema-instance. У питању је другачији простор имена од оног који користе елементи и етикете језика XML Schema, па отуда и другачији префикс xsi:. Такође, простор имена који одговара префиксу xsi: се користи у примерку (инстанци) XML документа који одговара опису датом у XML шеми, док сама шема користи простор имена који одговара префиксу xs:. Дакле, различити префикси, различити простори имена, различита места где се примењују.

С обзиром да је од два поменута атрибута xsi:noNamespaceSchemaLocation једноставнији за коришћење (ма колико његово дугачко име сугерисало другачије), даље ћемо у свим примерима користити искључиво њега. Атрибут се наводи у коренском елементу XML документа, где се дефинише и одговарајући префикс простора имена (xsi:):

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

Вредност атрибута xsi:noNamespaceSchemaLocation је адреса XSD-шеме са којом се XML документ повезује. Адреса може бити апсолутна (URL) или релативна у односу на каталог у коме се налази XML документ. У свим наредним примерима претпоставићемо да се XML документ и његова XSD-шема налазе у истом каталогу, па ћемо увек користити релативну адресу, тј. име XSD-датотеке (у овом примеру text.xsd).