<!-- ilias_user.dtd for ILIAS Users -->
<!-- For comments refer to our mailing list: xml-ilias@uni-koeln.de -->
<!-- $Id: ilias_user_4_5.dtd,v 1.1 2006/05/12 09:29:22 rku Exp $ -->
<!-- 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">

<!-- Action attribute for entities. -->
<!ENTITY % entityAction "Insert | Update | Delete">

<!-- Action attribute for relationships. -->
<!ENTITY % relationshipAction "Assign | AssignWithParents | Detach">

<!-- Users -->
<!ELEMENT Users (UDFDefinitions?,User*)>

<!-- User -->
<!ELEMENT User (Login, Role*, Password?, Firstname?, Lastname?, Title?, PersonalPicture?, Gender?, Email?, Birthday?,
	Institution?, Street?, City?, PostalCode?, Country?, SelCountry?, PhoneOffice?, PhoneHome?,
	PhoneMobile?, Fax?, Hobby?, Department?, Comment?, Matriculation?, Active?, ClientIP?,
	TimeLimitOwner?, TimeLimitUnlimited?, TimeLimitFrom?, TimeLimitUntil?, TimeLimitMessage?,
	ApproveDate?, AgreeDate?, AuthMode?, ExternalAccount?, Look?, LastUpdate?, LastLogin?, UserDefinedField*, AccountInfo*, GMapsInfo?)>

<!--
Id is ILIAS ID or unique identifier for this xml file
-->
<!ATTLIST User
	Id CDATA #REQUIRED
	Language (%langcode;) #REQUIRED
	Action (%entityAction;) "Insert"
>

<!-- Role -->
<!ELEMENT Role (#PCDATA)>

<!--
Id is ILIAS ID or unique identifier for this xml file
-->
<!ATTLIST Role
	Id CDATA #REQUIRED
	Type (Global | Local) #REQUIRED
	Action (%relationshipAction;) "Assign"
>

<!-- personal picture -->
<!ENTITY % I_Encoding " encoding  (Base64 | UUEncode )  'Base64'">

<!ELEMENT PersonalPicture (#PCDATA)>

<!ATTLIST PersonalPicture imagetype CDATA  'image/jpeg'
                     %I_Encoding; >

<!-- AuthMode -->
<!ENTITY % A_Mode " type  (default | local | ldap | radius | shibboleth | cas | soap | script | ecs )  'default'">
<!ELEMENT AuthMode (#PCDATA)>
<!ATTLIST AuthMode %A_Mode;>

<!-- Look -->
<!ELEMENT Look (#PCDATA)>
<!ATTLIST Look
    Skin CDATA #REQUIRED
    Style CDATA #REQUIRED
>

<!-- Other Elements -->
<!ELEMENT Login (#PCDATA)>
<!ELEMENT Password (#PCDATA)>
<!ATTLIST Password
	Type (PLAIN|BCRYPT) #REQUIRED
>
<!ELEMENT Firstname (#PCDATA)>
<!ELEMENT Lastname (#PCDATA)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Gender (#PCDATA)> <!-- content must be "f" (female) or "m" (male) -->
<!ELEMENT Email (#PCDATA)>
<!ELEMENT Birthday (#PCDATA)><!-- content muss be format yyyy-mm-dd -->
<!ELEMENT Institution (#PCDATA)>
<!ELEMENT Street (#PCDATA)>
<!ELEMENT City (#PCDATA)>
<!ELEMENT PostalCode (#PCDATA)>
<!ELEMENT Country (#PCDATA)>
<!ELEMENT SelCountry (#PCDATA)>
<!ELEMENT PhoneOffice (#PCDATA)>
<!ELEMENT PhoneHome (#PCDATA)>
<!ELEMENT PhoneMobile (#PCDATA)>
<!ELEMENT Fax (#PCDATA)>
<!ELEMENT Hobby (#PCDATA)>
<!ELEMENT Department (#PCDATA)>
<!ELEMENT Comment (#PCDATA)>
<!ELEMENT Matriculation (#PCDATA)>
<!ELEMENT Active (#PCDATA)> <!-- content must be "true" or "false" -->
<!ELEMENT ClientIP (#PCDATA)><!-- content must be a valid IP address xxx.xxx.xxx.xxx -->
<!ELEMENT TimeLimitOwner (#PCDATA)> <!-- content must be an integer value -->
<!ELEMENT TimeLimitUnlimited (#PCDATA)> <!-- content must be 0 or 1 -->
<!ELEMENT TimeLimitFrom (#PCDATA)> <!-- content must be a unix timestamp -->
<!ELEMENT TimeLimitUntil (#PCDATA)> <!-- content must be a unix timestamp -->
<!ELEMENT TimeLimitMessage (#PCDATA)> <!-- content must be 0 or 1 -->
<!ELEMENT ApproveDate (#PCDATA)> <!-- content must be a mysql datetime -->
<!ELEMENT AgreeDate (#PCDATA)> <!-- content must be a mysql datetime -->
<!ELEMENT LastUpdate (#PCDATA)> <!-- @soap: read only property, is mysql timestamp e.g. 2003-08-15 10:07:30  -->
<!ELEMENT LastLogin (#PCDATA)><!-- date of last login -->
<!ELEMENT ExternalAccount (#PCDATA)>
<!ELEMENT UserDefinedField (#PCDATA)>
<!ATTLIST UserDefinedField
    Id CDATA #REQUIRED
    Name CDATA #REQUIRED
>

<!-- defines definitions which can be refered to the id attribute in user defined fields -->
<!-- Up to now these are readonly values, hence you can read but not update them -->
<!-- Attribut Id: contains il_ prefix with id, content equals attribute id in UserDefinedField tag -->
<!-- Attribut UDFName: contains il_ prefix with id, content equals attribute name in UserDefinedField tag -->
<!-- Tag UDFValue: only together with type "SELECT", possible field values, at least one should match UserDefinedField tag content-->
<!ELEMENT UDFDefinitions (UDFDefinition*)>
<!ELEMENT UDFDefinition (UDFName, UDFValue*)>
<!ATTLIST UDFDefinition
	Id CDATA #REQUIRED
	Type       (TEXT|SELECT) #REQUIRED
	Visible    (TRUE|FALSE) #REQUIRED
	Changeable (TRUE|FALSE) #REQUIRED
	Required   (TRUE|FALSE)  #REQUIRED
	Searchable (TRUE|FALSE)  #REQUIRED
	CourseExport (TRUE|FALSE) #REQUIRED
	Export (TRUE|FALSE) #REQUIRED
>
<!ELEMENT UDFName (#PCDATA)>
<!ELEMENT UDFValue (#PCDATA)>



<!ELEMENT AccountInfo (#PCDATA)>
<!ATTLIST AccountInfo
	Type CDATA #REQUIRED
>


<!ELEMENT GMapsInfo EMPTY>
<!ATTLIST GMapsInfo
	longitude CDATA #REQUIRED
	latitude CDATA #REQUIRED
	zoom CDATA #REQUIRED
>
