namespace vk = "http://www.loedejongdigitaal.nl"

include "include/toolbox.rnc"
include "include/pmstructure.rnc"

# Schema for the books of Loe de Jong for de Verrijkt Koninkrijk project

Content = Book

Book = element vk:book {BookContent}

BookContent =
            Id
            & Foreword?                     # voorwoord
            & Index?                        # inhoudsopgave
            & Statement?                    # statement of accountability / verantwoording
            & Corrections?                  # wijzigingen
            & Chapter*                      # hoofdstukken (deel 13 heeft geen chapters)
            & Appendix*

Foreword = element vk:foreword { SectionContent }

Statement = element vk:statement { StatementContent}

StatementContent = Id
                    & Title
                    & Section*
Corrections = element vk:corrections { CorrectionsContent}

CorrectionsContent = Id
                    & Title
                    & Section*

Appendix = element vk:appendix { AppendixContent}

AppendixContent = Id
                    & Title
                    & Section*


Index = element vk:index {SectionContent}

Chapter = element vk:chapter { ChapterContent}

ChapterContent = 
                Id
                & Title
                & Number
                & Section*                  # een hoofdstuk is opgebouwd uit 'sections'. De tekst aan het begin van een hoofdstuk, nog voor de eerste sectie met titel,
                                            # in een eigen section geplaats.
                
Section = element vk:section { SectionContent}

SectionContent = 
                Id
                & Title?
                & ((Paragraph* & Block*) | SubSection+ )                # een section is opgebouwd uit paragrafen en blocks, of onderverdeeld in subsections.

SubSection = element vk:subsection { SubSectionContent}

SubSectionContent = 
                Id
                & Title?
                & Block*
                & Paragraph*                # een subsection is opgebouwd uit paragrafen en blocks.
                
Block = element vk:block { BlockContent}

BlockContent =
                ParagraphContent
                & Line+
                
Line = element vk:line { attribute left {text} & ParagraphContent}