Die wohl wichtigsten Dateien für die Konfiguration und Speicherung von Metadaten sind das mets.xml und das levels.xml. Das levels.xml befindet sich unter docuteam-packer/config. Es dient dazu, die Metadatenfelder zu bestimmen. Das mets.xml befindet sich in jedem SIP auf oberster Ebene neben dem Root-Element und enthält die Metadaten eines SIP.
mets.xml
Wird mit docuteam packer ein SIP erstellt, wird automatisch eine Datei angelegt, die sämtlichen Metadaten des Pakets enthält. Die Datei befindet sich im SIP auf der obersten Stufe neben dem Root-Element. Sie heisst mets.xml und ist nach den Vorgaben des Standards Matterhorn METS aufgebaut.

Der Standard Matterhorn METS kombiniert die Standards METS, PREMIS und EAD. Er gibt vor, wie diese drei Standards für die Beschreibung eines SIP eingesetzt werden können.
Technische und administrative Metadaten werden von docuteam packer automatisch extrahiert und erfasst. Die beschreibenden Metadaten muss der Nutzer in der Detailansicht des geöffneten SIP von Hand eingeben. Welche Metadatenfelder für welche Stufe zur Verfügung stehen und welche Werte darin erlaubt sind, wird in der Konfigurationsdatei levels.xml definiert.
levels.xml
Im levels.xml werden Einstellung vorgenommen, die einen Einfluss haben auf die Darstellung und Nutzung der Felder unter dem Tab Beschreibung in der Detailansicht eines SIP. Es befindet sich unter docuteam-packer/config. Hier kann bspw. festgelegt werden, welche Felder bei welcher Verzeichnungsebene angezeigt werden sollen, ob ein einzelnes Feld zwingend auszufüllen ist, ob Standardwerte verwendet werden oder wie ein eingegebener Wert validiert wird.
Im Ordner docuteam-packer/config liegen verschiedene vorkonfigurierte levels.xml Konfigurationsdateien. docuteam packer verwendet stets die Datei levels.xml; durch Umbenennen einer anderen Datei in levels.xml kann die Konfiguration angepasst werden:
| Dateiname | Versionsbeschreibung |
|---|
levels.xml | Standardversion mit einer Verzeichnungsstufe (Undefiniert) und allen in packer möglichen Metadatenfeldern |
levels_BAR.xml | um Matterhorn METS Pakete in eCH-0160 umzuwandeln |
levels_cmi_de.xml | angepasst für das Archivinformationssystem CMI AIS |
levels_isad-g_de.xml | mit Verzeichnungsstufen und Feldauswahl/-bezeichnungen nach ISAD(G) in Deutsch |
levels_isad-g_en.xml | mit Verzeichnungsstufen und Feldauswahl/-bezeichnungen nach ISAD(G) in Englisch |
levels_isad-g_fr.xml | mit Verzeichnungsstufen und Feldauswahl/-bezeichnungen nach ISAD(G) in Französisch |
In der ersten Sektion von levels.xml (LEVELS:MetadataElements) werden alle zur Verfügung stehenden Metadaten-Elemente und gegebenenfalls erlaubte Werte definiert. Für eine Übersicht aller Metadaten-Elemente in docuteam packer siehe die Liste der Metadaten-Elemente.
In der zweiten Sektion von levels.xml (LEVELS:Levels) werden die Verzeichnungsebenen sowie die Zuweisung von Metadaten-Elementen zu diesen Verzeichnungsebenen definiert.
Ein LEVELS:MetadataElement wird durch die folgenden sechs Attribute definiert:
| accessorNameId |
|---|
| Beispiel | accessNr |
| obligatorisch | ja |
| Erklärung | Der eindeutige Name des Metadatenfelds. Dieses muss den unten ersichtlichen Akzessoren entsprechen, mit welchen in packer auf die Daten zugegriffen wird. Über die i18n-Konfiguration kann im Bedarfsfall einem Metadaten-Feld für die Anzeige im GUI ein individuelles Label zugewiesen werden. |
| defaultExpression |
|---|
| Beispiel | new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date())((ch.docuteam.darc.mets.structmap.NodeAbstract)object1).getMimeType()"false" |
| obligatorisch | nein |
| Erklärung | Ein Java-Ausdruck, um dieses Feld beim Erstellen des Knotens mit einem Wert zu initialisieren. Der aktuelle Knoten wird referenziert durch: (ch.docuteam.darc.mets.structmap.NodeAbstract)object1. Für Beispiele siehe Liste der defaultExpressions. |
| validatorClassName |
|---|
| Beispiel | ch.docuteam.darc.mdconfig.MetadataElementValidatorDate |
| obligatorisch | nein |
| Erklärung | Eine Java-Klasse, die den Inhalt dieses Metadaten-Elementes beim Setzen validiert. Falls die Validierung den eingegebenen Wert nicht erlaubt, wird eine Fehlermeldung angezeigt und das Feld mit dem vorigen Wert gefüllt. Für eine Liste der Validatoren siehe Liste der validatorClassNames. |
| postActionClassName |
|---|
| Beispiel | ch.docuteam.darc.mdconfig.MetadataElementSetterPostActionSysOut |
| obligatorisch | nein |
| Erklärung | Eine Java-Klasse, die beliebige Aktionen ausführt, nachdem der Wert dieses Feldes gesetzt wurde. Diese Aktion wird nicht ausgeführt, wenn die Validierung des eingegebenen Werts fehlschlägt. Für eine Liste der möglichen postActions siehe Liste der postActionClassNames. |
| allowedValues |
|---|
| Beispiel | *;Deutsch;English;Français;Italiano, file:///config/skos/retentions.rdf |
| obligatorisch | nein |
| Erklärung | Der eindeutige Name des Metadatenfelds. Dieses muss den unten ersichtlichen Akzessoren entsprechen, mit welchen in packer auf die Daten zugegriffen wird. Über die i18n-Konfiguration kann im Bedarfsfall einem Metadaten-Feld für die Anzeige im GUI ein individuelles Label zugewiesen werden. |
| allowedValuesType |
|---|
| Beispiel | stringList |
| obligatorisch | nein |
| Erklärung | Angabe zum Typ der Auswahlliste erlaubter Werte. Unterstützt sind stringList, skosFile und csvFile. |
Ein Beispiel:
<LEVELS:MetadataElement
accessorNameID="retentionPolicy"
defaultExpression='"Confidential"'
allowedValues="OpenAccess;EmbargoPeriod30Years;EmbargoPeriod50Years;Confidential"
allowedValuesType="stringList"/>
Mit dem Element LEVELS:AllowedValuesSeparator kann der Separator der allowedValues-Liste gewählt werden. Dieser kann auch aus mehreren Zeichen bestehen, wie folgendes Beispiel zeigt:
<LEVELS:MetadataElements>
<LEVELS:AllowedValuesSeparator>::</LEVELS:AllowedValuesSeparator>
<LEVELS:MetadataElement
accessorNameID="language"
allowedValues="*::Deutsch::English::Français::Italiano"/>
...
</LEVELS:MetadataElements>
Verzeichnungsebenen
Ein LEVELS:Level (Verzeichnungsebene) wird durch folgende vier Attribute definiert:
| nameID |
|---|
Beispiel![]() | Archiv |
| obligatorisch | ja |
| Erklärung | Der eindeutige Name dieser Verzeichnungsebene |
| iconFileName |
|---|
Beispiel![]() | resources/images/LevelSerie.png |
| obligatorisch | ja |
| Erklärung | Der Pfad zur Icon-Datei dieser Ebene. Wenn diese Datei nicht existiert, wird ein gelbes Warn-Icon angezeigt. |
| allowedSublevelNameRefs |
|---|
Beispiel![]() | Abteilung Bestand Undefiniert |
| obligatorisch | nein |
| Erklärung | Die Liste der für diese Verzeichnungsebene erlaubten Unterebenen. Die Elemente dieser Liste müssen spezifiziert (als nameID) und durch ein Leerzeichen getrennt werden. Das erste Element dieser Liste wird bei neuen Unterelementen als Standardebene gesetzt. |
| isTrash |
|---|
Beispiel![]() | true |
| obligatorisch | nein |
| Erklärung | Markiert die entsprechende Verzeichnungsstufe als zu löschende Knoten, die durch die abliefernde Stelle (beispielsweise nach einem Review) kassiert werden können. |
Ein Beispiel:
<LEVELS:Level
nameID="Archiv"
iconFileName="resources/images/LevelSerie.png"
allowedSublevelNameRefs="Abteilung Bestand Undefiniert">
...
</LEVELS:Level>
Die Zuweisung von Metadaten-Elementen zu Verzeichnungsebenen wird durch eine Liste von LEVELS:LevelMetadataElement definiert. Dieses Element verfügt über die folgenden sieben Attribute:
| accessorNameRef |
|---|
Beispiel![]() | language |
| obligatorisch | ja |
| Erklärung | Die accessorNameID des Metadaten-Elementes; referenziert eine accessorNameID aus der Liste der <LEVELS:MetadataElements> (siehe oben) |
| isMandatory |
|---|
Beispiel![]() | true |
| obligatorisch | ja |
| Erklärung | Wenn true, ist dieses Metadaten-Element obligatorisch. Obligatorische Elemente werden immer in der Metadaten-Liste angezeigt. Wenn ein obligatorisches Element leer ist, wird das Element mit einem Ausrufezeichen markiert. |
| isRepeatable |
|---|
Beispiel![]() | false |
| obligatorisch | ja |
| Erklärung | Wenn true, ist dieses Metadaten-Elemente wiederholbar und kann entsprechend mehrfach nach Bedarf zugefügt werden. |
| isAlwaysDisplayed |
|---|
Beispiel![]() | true |
| obligatorisch | nein |
| Erklärung | Wenn true, wird dieses Metadaten-Element immer in der Metadaten-Liste angezeigt und muss nicht zuerst manuell hinzugefügt werden. |
| isReadOnly |
|---|
Beispiel![]() | false |
| obligatorisch | nein |
| Erklärung | Wenn true, kann dieses Metadaten-Element manuell nicht geändert werden. Ist eine defaultExpression angegeben, wird das Metadaten-Element beim Erstellen damit initialisiert. |
| keepInTemplate |
|---|
Beispiel![]() | false |
| obligatorisch | nein |
| Erklärung | Wenn true, wird dieses Metadaten-Element beim Erstellen einer Vorlage nicht gelöscht. |
| displayRows |
|---|
Beispiel![]() | 5 |
| obligatorisch | nein |
| Erklärung | Gibt die Anzahl der Zeilen bei der Darstellung dieses Metadaten-Elementes in der Metadaten-Liste an. |
Ein Beispiel:
<LEVELS:LevelMetadataElement
accessorNameRef="PID"
isMandatory="false"
isRepeatable="false"
isAlwaysDisplayed="true"
isReadOnly="true"/>
Je nach dem wie die Attribute im levels.xml definiert sind, werden die Metadatenfelder in der Detailansicht eines SIP entsprechend angezeigt.
Werden bspw. dynamische Metadaten-Elemente definiert, können diese im Tab Beschreibung aus der Dropdownliste unten links ausgewählt und durch Klicken auf das Pluszeichen zur Liste hinzugefügt werden.

Die erste Spalte in der Liste enthält in codierter Form Informationen zu den einzelnen Elementen, die im levels.xml definiert wurden:
| Symbol | Erklärung |
|---|
* | ist ein Pflichtfeld und wurde bereits ausgefüllt; Pflichtfelder sind immer sichtbar |
! | ist ein Pflichtfeld, das noch nicht ausgefüllt wurde |
O | ist immer sichtbar, aber kein Pflichtfeld |
+ | kann mehrmals vorkommen |
X | kann nicht editiert werden |
Für eine vollständige Liste der Metadaten-Elemente, die in packer verwendet werden können, siehe die Dokumentation zu Matterhorn METS.
Liste der defaultExpressions
Initialisiert das Feld mit ...![]() | defaultExpression |
|---|
| ... dem Inhalt "Abc" | '"Abc"' |
| ... dem aktuellen Datum im Format yyyy-MM-dd | 'new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date())' |
| ... dem MIME-Typ der Datei | '((ch.docuteam.darc.mets.structmap.NodeAbstract)object1).getMimeType()' |
| ... Datum der letzten Änderung einer Datei | 'ch.docuteam.tools.string.DateFormatter.getDateTimeString(object1.getFile().lastModified(), DateFormatter.Short)' |
| ... der Dateigrösse | 'ch.docuteam.tools.file.FileUtil.getHumanReadableFileSize(object1.getFile())' |
| ... der Dateiendung | 'object1.isFile() ? ch.docuteam.tools.file.FileUtil.asFileNameExtension(((ch.docuteam.darc.mets.structmap.NodeAbstract)object1).getFile()) : null' |
Liste der validatorClassNames
| validatorClassName | Akzeptiert nur ... |
|---|
'MetadataElementValidatorInteger.java' | ... Ganzzahlen zwischen -2147483648 und 2147483647 |
'MetadataElementValidatorShort.java' | ... positive Ganzzahlen zwischen 0 und 32767 |
'MetadataElementValidatorYear.java' | ... Daten im Format yyyy |
'MetadataElementValidatorDate.java' | ... Daten im Format yyyy-MM-dd |
'MetadataElementValidatorDateCH.java' | ... Daten im Format dd.MM.yyyy |
'MetadataElementValidatorDateYYYYMMDD.java' | ... Daten im Format yyyyMMdd |
'MetadataElementValidatorDateYYYYMMDDPartial.java' | ... Daten im Format yyyyMMdd, yyyyMM oder yyyy |
'MetadataElementValidatorDateRangeCH.java' | ... Daten oder Datumsbereiche im Format dd.MM.yyyy oder dd.MM.yyyy - dd.MM.yyyy |
'MetadataElementValidatorDateHierarchyRangeCH.java' | ... Daten oder Datumsbereiche im Format dd.MM.yyyy oder dd.MM.yyyy - dd.MM.yyyy und prüft zusätzlich ob der Datumsbereich im Datumsbereich der Vorfahren enthalten ist und die Datumsbereiche der Nachkommen enthält |
'MetadataElementValidatorDateHierarchyYear.java' | ... Daten oder Datumsbereiche im Format yyyy oder yyyy - yyyy und prüft zusätzlich ob der Datumsbereich im Datumsbereich der Vorfahren enthalten ist und die Datumsbereiche der Nachkommen enthält |
'MetadataElementValidatorUniqueValueAmongSiblings.java' | Prüft ob ein Metadatenelement innerhalb der Geschwister nur einmal vorkommt |
Liste der postActionClassNames
| postActionClassNames | Fügt eine Kopie eines ... |
|---|
'MetadataElementSetterPostActionAddValueInParents.java' | ... neu eingefügten Metadaten-Element in alle Vorfahren ein |
'MetadataElementSetterPostActionAddStartDateInParents.java' | ... Startdatum-Felds in alle Vorfahren ein, falls das gleiche Datum in den Vorfahren leer oder später ist als das neu eingegebene Datum. Unterstützt verschiedene Datumsformate |
'MetadataElementSetterPostActionAddEndDateInParents.java' | ... neu eingefügten Enddatum-Felds in alle Vorfahren ein, falls das gleiche Datum in den Vorfahren leer oder früher ist als das neu eingegebene Datum. Unterstützt verschiedene Datumsformate |
'MetadataElementSetterPostActionAddValueInChildrenOfDossiers.java' | Vererbt (hinzufügen/aktualisieren/entfernen) einen neuen Wert an Unterobjekte (wenn Stufe "Dossier" oder "Document" und Feld nicht wiederholbar ist) |