summaryrefslogtreecommitdiff
path: root/algo1w4d1/readme.md
blob: bfeff4109930dc3e44b5e9c8b4aa4b0cb7768a6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# week 4 deel 1

De criteria in de opdrachtbeschrijving zijn een beetje vaag, dus het
standaardgedrag van de XML parser staat in Doxygen-formaat in ValidXML.h
uitgelegd. De parser controleert letter voor letter of de XML nog geldig is,
waarbij gecontroleerd wordt op hiërarchie (d.m.v. Stack-klasse), en juiste
XML-syntax (geen dubbele `<` of `>`, en geen misplaatste `/`). Juiste
hiërarchie betekent voor deze parser alleen dat een bovenliggende tag niet kan
worden gesloten vóór een onderliggende tag. De main.cpp zorgt ervoor dat de
parser altijd vanuit stdin leest:

```bash
$ make
g++ -c  Stack.cpp -o Stack.o
g++ -c  ValidXML.cpp -o ValidXML.o
g++ -c  main.cpp -o main.o
g++ Stack.o ValidXML.o main.o -lstdc++ -o main
$ cat correct.xml 
<persoon>
        <naam attr="test">Donald Duck</naam>
        <adres>Eendenplein 17</adres>
        <woonplaats>Duckstad</woonplaats>
</persoon>
$ cat invalid.xml 
<persoon>
        <naam><adres>Donald Duck</naam>
        Eendenplein 17</adres>
        <woonplaats>Duckstad</woonplaats>
$ ./main < correct.xml 
XML is valid
$ ./main < invalid.xml 
XML is invalid
$ 
```