<!-- ilias_pg.dtd for ILIAS Page Objects only, omitting MetaData -->
<!-- , see http://www.ilias.uni-koeln.de/download/dtd/ilias_pg.dtd for current version -->
<!-- Initial version by Maik Stuehrenberg (Giessen University) for the BMBF-funded project MiLCA (Medienintensive Lehrmodule in der Computerlinguistik-Ausbildung), modelled after LOM version 1 Final Draft -->
<!-- Modifications and adoption to ILIAS made by Maik Stuehrenberg (Giessen University), Martin Rus, Matthias Rulinski, Alexander Killing, Matthias Kunkel (ILIAS open source, University of Cologne), Sascha Hofmann (Databay AG, Aachen) -->
<!-- For comments refer to our mailing list: xml-ilias@uni-koeln.de -->
<!-- $Id$ -->
<!-- Language codes referring to ISO 639-1 Alpha-2 code, see http://www.oasis-open.org/cover/iso639a.html for details -->
<!ENTITY % langcode "none | aa | ab | af | am | ar | as | ay | az | ba | be | bg | bh | bi | bn | bo | br | ca | co | cs | cy | da | de | dz | el | en | eo | es | et | eu | fa | fi | fj | fo | fr | fy | ga | gd | gl | gn | gu | ha | he | hi | hr | hu | hy | ia | ie | ik | id | is | it | iu | ja | jv | ka | kk | kl | km | kn | ko | ks | ku | ky | la | ln | lo | lt | lv | mg | mi | mk | ml | mn | mo | mr | ms | mt | my | na | ne | nl | no | oc | om | or | pa | pl | ps | pt | qu | rm | rn | ro | ru | rw | sa | sd | sg | sh  | si | sk | sl | sm | sn | so | sq | sr | ss | st | su | sv | sw | ta | te | tg | th | ti | tk | tl | tn | to | tr | ts | tt | tw | ug | uk | ur | uz | vi | vo | wo | xh | yi | yo | za | zh | zu">
<!-- Types of (textual) content -->
<!ENTITY % text "#PCDATA | br | Comment | PageTurn | Footnote | Emph | Strong | Quotation | Code | ExtLink | IntLink">
<!ENTITY % commenttext "#PCDATA | br | Emph | PageTurn | Footnote | Strong | Quotation | Code | ExtLink | IntLink">
<!ENTITY % emphtext "#PCDATA | br | Comment | PageTurn | Footnote | Strong | Quotation | Code | ExtLink | IntLink">
<!ENTITY % strongtext "#PCDATA | br | Comment | PageTurn | Footnote | Emph | Quotation | Code | ExtLink | IntLink">
<!ENTITY % linktext "#PCDATA | br | Comment | Emph | Strong | Quotation | Code">
<!ENTITY % simpletext "#PCDATA | br | Emph | Strong | Quotation | Code | ExtLink | IntLink">
<!ENTITY % footnotetext "#PCDATA | br | Emph | Strong | ExtLink | IntLink">
<!ENTITY % titletext "#PCDATA | br | Emph | Strong | Quotation | Code">

<!-- PageObject -->
<!-- Object for displaying content on a screen and comparable to a page of a book; a PageObject contains MediaObjects (=images, applets, ...) and/or paragraphs of textual content; a PageObject must not include StructureObjects or PageObjects! -->
<!-- PageObjects are comparable to LOM LearningObjects of aggregation level 2 -->
<!ELEMENT PageObject (PageContent*, Layout?)>

<!ELEMENT PageContent ((Paragraph | MediaObject | Table | List | FileList | Question), BibItemIdentifier*)>
<!-- BibItemIdentifier specify from which BibItem(s) the content comes -->
<!ELEMENT BibItemIdentifier EMPTY>
<!ATTLIST BibItemIdentifier
	Catalog CDATA #IMPLIED
	Entry CDATA #REQUIRED
>


<!-- PageTurn -->
<!ELEMENT PageTurn (BibItemIdentifier)>
<!ATTLIST PageTurn
	NumberingType (Roman | Arabic | Alphanumeric) #REQUIRED
	Number CDATA #IMPLIED
>

<!-- Identifier -->
<!ELEMENT Identifier EMPTY>
<!ATTLIST Identifier
	Catalog CDATA #IMPLIED
	Entry ID #REQUIRED
>

<!-- Title -->
<!ELEMENT Title (%titletext;)*>
<!ATTLIST Title
	Language (%langcode;) #REQUIRED
>

<!-- MediaObject -->
<!-- Object of lowest complexity that contains only raw media data or fragments (e.g. an image or applet); Textual content cannot be a MediaObject! -->
<!-- MediaObjects are comparable to LOM LearningObjects of aggregation level 1 -->
<!ELEMENT MediaObject ((MetaData, MediaItem+) | (MediaAlias, MediaAliasItem+))>
<!-- MediaAlias -->
<!-- Alias for an already existing MediaObject; this allows an easy reuse of existing MediaObjects; an alias is not a copy but only a reference to the original object-->
<!ELEMENT MediaAlias EMPTY>
<!ATTLIST MediaAlias
	OriginId CDATA #REQUIRED
>
<!-- MediaAliasItem -->
<!ELEMENT MediaAliasItem (Layout?, Caption?, Parameter*)>
<!ATTLIST MediaAliasItem
	Purpose (Standard | Fullscreen | Additional) #REQUIRED
>
<!-- MediaObject is not an alias -->
<!-- Every MediaItem belongs to a corresponding format/location pair in the technical
	 Section of Meta Data -->
<!ELEMENT MediaItem (Location, Format?, Layout?, Caption?, Parameter*, MapArea*)>
<!ATTLIST MediaItem
	Purpose (Standard | Fullscreen | Additional) #REQUIRED
>
<!-- MapAreas should be only defined for image objects with purpose Standard or Fullscreen -->
<!ELEMENT MapArea (ExtLink | IntLink)>
<!ATTLIST MapArea
	Shape (Rect | Circle | Poly) #REQUIRED
	Coords CDATA #IMPLIED
>


<!ELEMENT Format (#PCDATA)>
<!ELEMENT Location (#PCDATA)>
<!ATTLIST Location
	Type (LocalFile | Reference) #REQUIRED
>


<!-- Paragraph -->
<!-- All textual content of a PageObject has to be divided in single paragraphs -->
<!ELEMENT Paragraph (%text;)*>
<!ATTLIST Paragraph
	Language (%langcode;) #REQUIRED
	Characteristic (Headline1 | Headline2 | Headline3 | Example | Citation | Mnemonic | Additional | List | Remark | Code | TableContent) #IMPLIED
	SubCharacteristic CDATA #IMPLIED
	AutoIndent (y | n) #IMPLIED
	ShowLineNumbers (y | n) #IMPLIED
	DownloadTitle CDATA #IMPLIED
>

<!-- br -->
<!ELEMENT br EMPTY>

<!-- Comment -->
<!ELEMENT Comment (%commenttext;)*>
<!ATTLIST Comment
	Language (%langcode;) #REQUIRED
>
<!-- Emph -->
<!ELEMENT Emph (%emphtext;)*>
<!ATTLIST Emph
	Reason (Keyword | Intuition | MetaLanguageUse) #IMPLIED
>

<!-- Footnote -->
<!ELEMENT Footnote (%footnotetext;)*>
<!ATTLIST Footnote
	Creator (Editor | Translator | Author) #IMPLIED
>

<!-- Strong -->
<!ELEMENT Strong (%strongtext;)*>
<!ATTLIST Strong
	Reason (Keyword | Intuition | MetaLanguageUse) #IMPLIED
>

<!-- Quotation -->
<!ELEMENT Quotation (%text;)*>
<!ATTLIST Quotation
	Language (%langcode;) #REQUIRED
	Reference IDREF #IMPLIED
>

<!-- Code -->
<!ELEMENT Code (#PCDATA | br)*>
<!ATTLIST Code
	Id ID #IMPLIED
	ProgrammingLanguage CDATA #IMPLIED
>

<!-- List -->
<!ELEMENT List (Title?, ListItem+)>
<!ATTLIST List
	Id ID #IMPLIED
	Type (Ordered | Unordered) #REQUIRED
	NumberingType (Roman | roman | Alphabetic | alphabetic | Number) #IMPLIED
>
<!ELEMENT ListItem (PageContent*)>

<!-- FileList -->
<!ELEMENT FileList (Title?, FileItem*)>
<!ELEMENT FileItem (Identifier, Location, Format?)>

<!-- Table -->
<!-- Table model is some kind of a mixture of mimalized CALS and HTML dtd -->
<!-- Only a minimum of style elements and attributes defined -->
<!ELEMENT Table (Title?, Caption?, Summary?, TableRow+)>
<!ATTLIST Table
	Language (%langcode;) #REQUIRED
	Id ID #IMPLIED
	Width CDATA #IMPLIED
	Border CDATA #IMPLIED
	HorizontalAlign (Left | Center | Right | LeftFloat | RightFloat) #IMPLIED
	CellPadding CDATA #IMPLIED
	CellSpacing CDATA #IMPLIED
	Class CDATA #IMPLIED
>
<!ELEMENT Caption (%titletext;)*>
<!ATTLIST Caption
	Align (top | bottom) #REQUIRED
>
<!ELEMENT Summary (%simpletext;)*>
<!ELEMENT TableRow (TableData+)>
<!ELEMENT TableData (PageContent*)>
<!ATTLIST TableData
	Width CDATA #IMPLIED
	Class CDATA #IMPLIED
>

<!-- ExtLink -->
<!-- An element to link to _external_ resources outside the ILIAS system, e.g. to a web site-->
<!-- It is fixed to xlink-type simple, only required attribute value is href -->
<!ELEMENT ExtLink (%linktext;)*>
<!ATTLIST ExtLink
	Href CDATA #REQUIRED
	Title CDATA #IMPLIED
>

<!-- IntLink -->
<!-- An element to link to _internal_ resources via XML ID/IDREF -->
<!-- Each Object has an Identifier attribute (type ID) in its Metadata/General element; only this one should be used! -->
<!-- Other less usable Identifier attributes are in Metadata/Meta-Metadata and in Metadata/Resource element; they should be ignored! -->
<!-- In case of Anchor the concerning attribute Id of the Anchor should be used! -->
<!-- Target Type differs from ilias_co.dtd (there: IDREF) -->
<!ELEMENT IntLink (%linktext;)*>
<!ATTLIST IntLink
	Target CDATA #REQUIRED
	Type (StructureObject | PageObject | MediaObject | GlossaryItem | RepositoryItem) #REQUIRED
	TargetFrame (Media | FAQ | Glossary | New) #IMPLIED
>

<!-- Question -->
<!ELEMENT Question EMPTY>
<!ATTLIST Question
	QRef CDATA #REQUIRED
>

<!-- Glossary -->
<!-- The Glossary is a container for all GlossaryItems and always part of the LearningModule-->
<!ELEMENT Glossary (MetaData, GlossaryItem+)>
<!--A GlossaryItem consists of MetaData, a term and one or more definitions; it can be referred by PageObjects-->
<!ELEMENT GlossaryItem (GlossaryTerm, Definition+)>
<!ATTLIST GlossaryItem
	Language (%langcode;) #REQUIRED
	Id ID #REQUIRED
>
<!-- GlossaryTerms can be included in Paragraphs -->
<!ELEMENT GlossaryTerm (#PCDATA)>
<!ELEMENT Definition (MetaData, PageContent*)>

<!-- Layout -->
<!-- Layout information for formatting content output different from default layout -->
<!ELEMENT Layout EMPTY>
<!ATTLIST Layout
	HorizontalAlign (Left | Center | Right | LeftFloat | RightFloat) #IMPLIED
	Width CDATA #IMPLIED
	Height CDATA #IMPLIED
>
<!-- Parameter -->
<!-- Special parameters needed for MediaObjects, e.g. a starting class for Java objects; parameters depend on types of MediaObjects -->
<!ELEMENT Parameter EMPTY>
<!ATTLIST Parameter
	Name CDATA #REQUIRED
	Value CDATA #REQUIRED
>

<!-- BibItem -->
<!ELEMENT BibItem (Identifier, Language+, Author*, Booktitle, CrossRef*, Edition, Editor*, HowPublished, WherePublished*, Institution*, Journal?, Keyword*, Month?, Pages?, Publisher, School*, Series?, Year, (URL | (ISSN?, ISBN?)))>
<!ATTLIST BibItem
	Type (book | inbook | journalarticle | proceedings | inproceedings | dissertation | phdthesis | mastersthesis | techreport | manual | newspaperarticle | av | internet | unpublished) #REQUIRED
	Label ID #REQUIRED
>

<!ELEMENT Author (FirstName*, MiddleName*, LastName)>
<!ELEMENT Booktitle (#PCDATA)>
<!ATTLIST Booktitle
	Language (%langcode;) #REQUIRED
>
<!ELEMENT CrossRef (#PCDATA)>
<!ELEMENT Edition (#PCDATA)>
<!ELEMENT Editor (#PCDATA)>
<!ELEMENT HowPublished EMPTY>
<!ATTLIST HowPublished
	Type (GreyLiterature | Print | Internet) #REQUIRED
>
<!ELEMENT WherePublished (#PCDATA)>
<!ELEMENT Institution (#PCDATA)>
<!ELEMENT Journal (#PCDATA)>
<!ATTLIST Journal
	Note CDATA #IMPLIED
	Number CDATA #REQUIRED
	Organization CDATA #IMPLIED
>

<!ELEMENT Month (#PCDATA)>
<!ELEMENT Pages (#PCDATA)>
<!ELEMENT Publisher (#PCDATA)>
<!ELEMENT School (#PCDATA)>
<!ELEMENT Series (SeriesTitle, SeriesEditor*, SeriesVolume?)>
<!ELEMENT SeriesTitle (#PCDATA)>
<!ELEMENT SeriesEditor (#PCDATA)>
<!ELEMENT SeriesVolume (#PCDATA)>
<!ELEMENT Volume (#PCDATA)>
<!ELEMENT Year (#PCDATA)>

<!ELEMENT ISBN (#PCDATA)>
<!ELEMENT ISSN (#PCDATA)>
<!ELEMENT URL (#PCDATA)>

<!ELEMENT LastName (#PCDATA)>
<!ELEMENT FirstName (#PCDATA)>
<!ELEMENT MiddleName (#PCDATA)>
