HW05 - XML dokument
Termín odevzdání | 20.11.2022 23:59 CET |
Bodový zisk | 6b |
Zadání
Cílem úlohy je provést validaci strukturovaného textu (XML) ve formě textového řetězce obecné délky, který je argumentem funkce.
V úloze uvažujeme pouze slova bez diakritiky. Za XML dokument budeme považovat takový textový řetězec, který začíná libovolným XML tagem. V řešení není dovoleno použití externích knihoven.
Odevzdání
Do BRUTE odevzdejte soubor validace.py
, který bude obsahovat funkci xml
s jedním argumentem - textovým řetězcem.
Informace v textovém řetězci je strukturována pomocí XML značek.
XML značky jsou
Ve vstupním textu se mohou objevit oba druhy.
Párovost / nepárovost značek zde není určena definicí, ale pouze zápisem (tj. kombinací znaků <
, >
a /
).
Návratovou hodnotou funkce je n-tice, jejíž první položkou je logická hodnota, reprezentující validitu XML textu, druhou je počet celkem nalezených tagů a třetí seznam s nalezenými (unikátnimi) tagy ve validním XML. Pokud je XML text nevalidní, počet tagů bude None
a seznam bude prázdný.
Příklady
Příklad 1
xml('<a><b></a></b>')
(False, None, [])
Příklad 2
xml('<a><b>10</b><c>ahoj svete</c><d/><d/></a>')
(True, 5, ['a', 'b', 'c', 'd'])
Příklad 3
xml('<table><tr><td>10</td><td>20</td></tr><tr><td><img/></td></tr></table>')
(True, 7, ['table', 'tr', 'td', 'img'])