---
# System prepended metadata

title: Documentverwerking oefeningen

---

# Documentverwerking oefeningen

# Document models:
- XML Validation, XSD, DTD, formal model

# Document search & Transformation:
- XSLT, XML, HTML representation, CSV representation

# Typography:
- boxes, glues, penalties
- optimal breaking

# Regex:
- regexes for some classic stuff and a regexcrossword

# Xpath:
- Axis and node test
    - Children of the root: `/child::node()`
    - Child elements of the root: `/child::*`
    - Course summary information: `/course/summary//child::*`
    - Lecture times: `/course/summary/lectures/lecture/child::*/child::text()`
    - Style attributes: `//@style` or `//attribute::style`
    - Siblings: `//content/child::*[position()>1]`
- Simple predicates
    - First paragraphs: `//chapter/content/child::paragraph[1]`
    - First paragraph every: `(//paragraph)[1]`
    - Chapters that are not super boring: `//chapter[excitement!="Quite boring to be honest"]`
    - Chapters appearing in the correct position: `//child::chapter[position()=@number]`
    - Chapters about documents: `//child::chapter/child::content/child::paragraph[contains(text(),"document")]/../..`
    - Paragraphs starting with "In": `//child::paragraph[starts-with(text(),"In")]`
    - Fixed length excitement: `//child::chapter/child::excitement[string-length(text())<10]`
- Complicated predicates
    - No graphical content: `//child::chapter[count(child::content/child::figure|child::content/child::graph)=0]/@number`
    - Counting paragraphs: `//child::chapter[count(child::content/child::paragraph)>=4]`
    - Paragraph with bold font predeced by images: `//child::paragraph[count(child::b)>0][count(preceding-sibling::*[1]/self::image)=1]`
    - Title appears in text: `//child::title[contains(..//child::paragraph/text(), text())]`