Merge lp:goobi-presentation/1.1 into lp:~slub.team/goobi-presentation/old-bzr-trunk

Proposed by Sebastian Meyer
Status: Merged
Approved by: Sebastian Meyer
Approved revision: 124
Merged at revision: 85
Proposed branch: lp:goobi-presentation/1.1
Merge into: lp:~slub.team/goobi-presentation/old-bzr-trunk
Diff against target: 131851 lines (+64297/-64443) (has conflicts)
210 files modified
dlf/cli/class.tx_dlf_cli.php (+12/-12)
dlf/common/class.tx_dlf_document.php (+353/-271)
dlf/common/class.tx_dlf_format.php (+11/-11)
dlf/common/class.tx_dlf_helper.php (+133/-48)
dlf/common/class.tx_dlf_indexing.php (+24/-8)
dlf/common/class.tx_dlf_list.php (+97/-27)
dlf/common/class.tx_dlf_mods.php (+8/-8)
dlf/common/class.tx_dlf_module.php (+32/-32)
dlf/common/class.tx_dlf_plugin.php (+48/-33)
dlf/common/class.tx_dlf_solr.php (+53/-27)
dlf/doc/METS_Anwendungsprofil_2.0.xml (+4342/-4720)
dlf/doc/METS_Application_Profile_2.0.xml (+4283/-4652)
dlf/ext_autoload.php (+31/-30)
dlf/ext_conf_template.txt (+6/-3)
dlf/ext_emconf.php (+34/-1)
dlf/ext_localconf.php (+3/-1)
dlf/ext_tables.php (+149/-142)
dlf/ext_tables.sql (+2/-3)
dlf/hooks/class.tx_dlf_em.php (+162/-162)
dlf/hooks/class.tx_dlf_hacks.php (+8/-8)
dlf/hooks/class.tx_dlf_tceforms.php (+26/-26)
dlf/hooks/class.tx_dlf_tcemain.php (+79/-79)
dlf/lib/ISO-639/iso-639-1.xml (+295/-295)
dlf/lib/ISO-639/iso-639-2b.xml (+983/-983)
dlf/lib/OpenLayers/lib/Firebug/firebug.css (+89/-101)
dlf/lib/OpenLayers/lib/Firebug/firebug.html (+21/-23)
dlf/lib/OpenLayers/lib/Firebug/firebug.js (+674/-674)
dlf/lib/OpenLayers/lib/Firebug/firebugx.js (+9/-9)
dlf/lib/OpenLayers/lib/OpenLayers.js (+328/-328)
dlf/lib/OpenLayers/lib/OpenLayers/Ajax.js (+677/-677)
dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes.js (+561/-561)
dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Bounds.js (+680/-680)
dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Class.js (+114/-114)
dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Element.js (+246/-246)
dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/LonLat.js (+189/-189)
dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Pixel.js (+124/-124)
dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Size.js (+84/-84)
dlf/lib/OpenLayers/lib/OpenLayers/Console.js (+245/-245)
dlf/lib/OpenLayers/lib/OpenLayers/Control.js (+356/-356)
dlf/lib/OpenLayers/lib/OpenLayers/Control/ArgParser.js (+165/-165)
dlf/lib/OpenLayers/lib/OpenLayers/Control/Attribution.js (+96/-96)
dlf/lib/OpenLayers/lib/OpenLayers/Control/Button.js (+43/-43)
dlf/lib/OpenLayers/lib/OpenLayers/Control/DragFeature.js (+302/-302)
dlf/lib/OpenLayers/lib/OpenLayers/Control/DragPan.js (+93/-93)
dlf/lib/OpenLayers/lib/OpenLayers/Control/DrawFeature.js (+125/-125)
dlf/lib/OpenLayers/lib/OpenLayers/Control/EditingToolbar.js (+62/-62)
dlf/lib/OpenLayers/lib/OpenLayers/Control/GetFeature.js (+578/-578)
dlf/lib/OpenLayers/lib/OpenLayers/Control/Graticule.js (+327/-327)
dlf/lib/OpenLayers/lib/OpenLayers/Control/KeyboardDefaults.js (+127/-127)
dlf/lib/OpenLayers/lib/OpenLayers/Control/LayerSwitcher.js (+619/-619)
dlf/lib/OpenLayers/lib/OpenLayers/Control/ModifyFeature.js (+777/-777)
dlf/lib/OpenLayers/lib/OpenLayers/Control/MouseDefaults.js (+367/-367)
dlf/lib/OpenLayers/lib/OpenLayers/Control/MousePosition.js (+189/-189)
dlf/lib/OpenLayers/lib/OpenLayers/Control/MouseToolbar.js (+405/-405)
dlf/lib/OpenLayers/lib/OpenLayers/Control/NavToolbar.js (+54/-54)
dlf/lib/OpenLayers/lib/OpenLayers/Control/Navigation.js (+302/-302)
dlf/lib/OpenLayers/lib/OpenLayers/Control/OverviewMap.js (+710/-710)
dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoom.js (+245/-245)
dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoomBar.js (+395/-395)
dlf/lib/OpenLayers/lib/OpenLayers/Control/Panel.js (+300/-300)
dlf/lib/OpenLayers/lib/OpenLayers/Control/Permalink.js (+219/-219)
dlf/lib/OpenLayers/lib/OpenLayers/Control/Scale.js (+77/-77)
dlf/lib/OpenLayers/lib/OpenLayers/Control/SelectFeature.js (+612/-612)
dlf/lib/OpenLayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js (+533/-533)
dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomBox.js (+94/-94)
dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomToMaxExtent.js (+39/-39)
dlf/lib/OpenLayers/lib/OpenLayers/Events.js (+854/-854)
dlf/lib/OpenLayers/lib/OpenLayers/Feature.js (+226/-226)
dlf/lib/OpenLayers/lib/OpenLayers/Feature/Vector.js (+453/-453)
dlf/lib/OpenLayers/lib/OpenLayers/Feature/WFS.js (+79/-79)
dlf/lib/OpenLayers/lib/OpenLayers/Format.js (+122/-122)
dlf/lib/OpenLayers/lib/OpenLayers/Format/GML.js (+913/-913)
dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoJSON.js (+715/-715)
dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoRSS.js (+419/-419)
dlf/lib/OpenLayers/lib/OpenLayers/Format/JSON.js (+388/-388)
dlf/lib/OpenLayers/lib/OpenLayers/Format/KML.js (+1288/-1288)
dlf/lib/OpenLayers/lib/OpenLayers/Format/OSM.js (+456/-456)
dlf/lib/OpenLayers/lib/OpenLayers/Format/SLD.js (+130/-130)
dlf/lib/OpenLayers/lib/OpenLayers/Format/SOSGetObservation.js (+260/-260)
dlf/lib/OpenLayers/lib/OpenLayers/Format/Text.js (+151/-151)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WFS.js (+219/-219)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WFSCapabilities.js (+74/-74)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WFSCapabilities/v1.js (+116/-116)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js (+151/-151)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js (+30/-30)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WKT.js (+353/-353)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMC.js (+396/-396)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMC/v1.js (+818/-818)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMC/v1_0_0.js (+75/-75)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMC/v1_1_0.js (+126/-126)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js (+123/-123)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMSCapabilities/v1_3_0.js (+25/-25)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMSDescribeLayer.js (+90/-90)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMSDescribeLayer/v1_1.js (+98/-98)
dlf/lib/OpenLayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js (+283/-283)
dlf/lib/OpenLayers/lib/OpenLayers/Format/XML.js (+880/-880)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry.js (+455/-455)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/Collection.js (+499/-499)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/Curve.js (+92/-92)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/LineString.js (+551/-551)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/LinearRing.js (+416/-416)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/MultiLineString.js (+261/-261)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/MultiPoint.js (+69/-69)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/MultiPolygon.js (+45/-45)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/Point.js (+282/-282)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/Polygon.js (+258/-258)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/Rectangle.js (+98/-98)
dlf/lib/OpenLayers/lib/OpenLayers/Geometry/Surface.js (+16/-16)
dlf/lib/OpenLayers/lib/OpenLayers/Handler.js (+285/-285)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Box.js (+209/-209)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Click.js (+324/-324)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Drag.js (+419/-419)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Feature.js (+387/-387)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Hover.js (+182/-182)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Keyboard.js (+108/-108)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/MouseWheel.js (+282/-282)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Path.js (+301/-301)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Point.js (+372/-372)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/Polygon.js (+143/-143)
dlf/lib/OpenLayers/lib/OpenLayers/Handler/RegularPolygon.js (+410/-410)
dlf/lib/OpenLayers/lib/OpenLayers/Icon.js (+227/-227)
dlf/lib/OpenLayers/lib/OpenLayers/Lang/de.js (+84/-84)
dlf/lib/OpenLayers/lib/OpenLayers/Layer.js (+1197/-1197)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Boxes.js (+75/-75)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/EventPane.js (+417/-417)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/FixedZoomLevels.js (+314/-314)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/GML.js (+173/-173)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/GeoRSS.js (+265/-265)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Google.js (+748/-748)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Grid.js (+742/-742)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/HTTPRequest.js (+229/-229)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Image.js (+253/-253)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/KaMap.js (+205/-205)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/MapServer.js (+198/-198)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/MapServer/Untiled.js (+71/-71)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Markers.js (+186/-186)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/MultiMap.js (+283/-283)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/PointTrack.js (+102/-102)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/SphericalMercator.js (+159/-159)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/TMS.js (+152/-152)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Text.js (+263/-263)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/TileCache.js (+164/-164)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Vector.js (+855/-855)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Vector/RootContainer.js (+156/-156)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/VirtualEarth.js (+359/-359)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/WFS.js (+608/-608)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/WMS.js (+265/-265)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/WMS/Post.js (+98/-98)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/WMS/Untiled.js (+71/-71)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/WorldWind.js (+119/-119)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Yahoo.js (+421/-421)
dlf/lib/OpenLayers/lib/OpenLayers/Layer/Zoomify.js (+306/-306)
dlf/lib/OpenLayers/lib/OpenLayers/Map.js (+2388/-2388)
dlf/lib/OpenLayers/lib/OpenLayers/Marker.js (+241/-241)
dlf/lib/OpenLayers/lib/OpenLayers/Marker/Box.js (+119/-119)
dlf/lib/OpenLayers/lib/OpenLayers/Popup.js (+1051/-1051)
dlf/lib/OpenLayers/lib/OpenLayers/Popup/Anchored.js (+197/-197)
dlf/lib/OpenLayers/lib/OpenLayers/Popup/AnchoredBubble.js (+189/-189)
dlf/lib/OpenLayers/lib/OpenLayers/Projection.js (+177/-177)
dlf/lib/OpenLayers/lib/OpenLayers/Renderer.js (+307/-307)
dlf/lib/OpenLayers/lib/OpenLayers/Renderer/Elements.js (+1017/-1017)
dlf/lib/OpenLayers/lib/OpenLayers/Renderer/SVG.js (+995/-995)
dlf/lib/OpenLayers/lib/OpenLayers/Renderer/VML.js (+997/-997)
dlf/lib/OpenLayers/lib/OpenLayers/Rule.js (+208/-208)
dlf/lib/OpenLayers/lib/OpenLayers/SingleFile.js (+9/-9)
dlf/lib/OpenLayers/lib/OpenLayers/Style.js (+411/-411)
dlf/lib/OpenLayers/lib/OpenLayers/StyleMap.js (+159/-159)
dlf/lib/OpenLayers/lib/OpenLayers/Tile.js (+280/-280)
dlf/lib/OpenLayers/lib/OpenLayers/Tile/Image.js (+576/-576)
dlf/lib/OpenLayers/lib/OpenLayers/Tile/Image/IFrame.js (+261/-261)
dlf/lib/OpenLayers/lib/OpenLayers/Tile/WFS.js (+191/-191)
dlf/lib/OpenLayers/lib/OpenLayers/Tween.js (+322/-322)
dlf/lib/OpenLayers/lib/OpenLayers/Util.js (+1711/-1711)
dlf/lib/OpenLayers/lib/Rico/Color.js (+244/-244)
dlf/lib/OpenLayers/lib/Rico/Corner.js (+329/-329)
dlf/lib/OpenLayers/theme/default/style.css (+397/-397)
dlf/locallang.xml (+6/-10)
dlf/modules/conf.php (+2/-2)
dlf/modules/indexing/conf.php (+1/-1)
dlf/modules/indexing/index.php (+8/-4)
dlf/modules/newclient/conf.php (+1/-1)
dlf/modules/newclient/index.php (+74/-74)
dlf/modules/newclient/locallang.xml (+4/-0)
dlf/modules/newclient/metadata.inc.php (+27/-27)
dlf/modules/newclient/structures.inc.php (+23/-23)
dlf/plugins/collection/class.tx_dlf_collection.php (+58/-16)
dlf/plugins/feeds/flexform.xml (+1/-0)
dlf/plugins/listview/class.tx_dlf_listview.php (+222/-147)
dlf/plugins/listview/template.tmpl (+1/-0)
dlf/plugins/metadata/class.tx_dlf_metadata.php (+74/-68)
dlf/plugins/metadata/flexform.xml (+13/-1)
dlf/plugins/metadata/locallang.xml (+2/-0)
dlf/plugins/navigation/class.tx_dlf_navigation.php (+13/-5)
dlf/plugins/navigation/flexform.xml (+14/-0)
dlf/plugins/oai/class.tx_dlf_oai.php (+9/-3)
dlf/plugins/oai/flexform.xml (+95/-94)
dlf/plugins/oai/locallang.xml (+42/-42)
dlf/plugins/oai/transform.xsl (+499/-647)
dlf/plugins/pageview/class.tx_dlf_pageview.php (+3/-3)
dlf/plugins/search/class.tx_dlf_search.php (+196/-19)
dlf/plugins/search/class.tx_dlf_search_suggest.php (+82/-0)
dlf/plugins/search/flexform.xml (+3/-2)
dlf/plugins/search/template.tmpl (+2/-1)
dlf/plugins/search/tx_dlf_search_suggest.js (+29/-0)
dlf/plugins/statistics/class.tx_dlf_statistics.php (+1/-1)
dlf/plugins/toc/class.tx_dlf_toc.php (+11/-31)
dlf/res/icons/LICENSE.txt (+4/-0)
dlf/res/icons/NOTICE.txt (+1/-0)
dlf/t3jquery.txt (+1/-0)
dlf/tca.php (+33/-57)
Text conflict in dlf/ext_emconf.php
To merge this branch: bzr merge lp:goobi-presentation/1.1
Reviewer Review Type Date Requested Status
Sebastian Meyer Approve
Review via email: mp+118930@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Sebastian Meyer (sebastian-meyer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'dlf/cli/class.tx_dlf_cli.php'
2--- dlf/cli/class.tx_dlf_cli.php 2012-04-30 16:08:47 +0000
3+++ dlf/cli/class.tx_dlf_cli.php 2012-08-09 11:45:27 +0000
4@@ -1,6 +1,6 @@
5 <?php
6 /***************************************************************
7-* Copyright notice
8+ * Copyright notice
9 *
10 * (c) 2012 Sebastian Meyer <sebastian.meyer@slub-dresden.de>
11 * All rights reserved
12@@ -67,16 +67,16 @@
13 $this->cli_validateArgs();
14
15 // Get the document...
16- $doc = tx_dlf_document::getInstance($this->cli_args['-doc'][0], 0, TRUE);
17+ $doc = tx_dlf_document::getInstance($this->cli_args['-doc'][0], $this->cli_args['-pid'][0], TRUE);
18
19 if ($doc->ready) {
20
21 // ...and save it to the database...
22 if (!$doc->save(intval($this->cli_args['-pid'][0]), intval($this->cli_args['-core'][0]))) {
23
24- $this->cli_echo('ERROR: Document '.$this->cli_args['-doc'][0].' not saved and indexed'.LF, TRUE);
25-
26- exit (1);
27+ $this->cli_echo('ERROR: Document '.$this->cli_args['-doc'][0].' not saved and indexed'.LF, TRUE);
28+
29+ exit (1);
30
31 }
32
33@@ -106,13 +106,13 @@
34
35 // Set basic information about the script.
36 $this->cli_help = array (
37- 'name' => 'Command Line Interface for Goobi.Presentation',
38- 'synopsis' => '###OPTIONS###',
39- 'description' => 'Currently the only task available is "index".'.LF.'Try "/PATH/TO/TYPO3/cli_dispatch.phpsh dlf index" to view more options.',
40- 'examples' => '/PATH/TO/TYPO3/cli_dispatch.phpsh dlf TASK -ARG1=VALUE1 -ARG2=VALUE2',
41- 'options' => '',
42- 'license' => 'GNU GPL - free software!',
43- 'author' => 'Sebastian Meyer <sebastian.meyer@slub-dresden.de>',
44+ 'name' => 'Command Line Interface for Goobi.Presentation',
45+ 'synopsis' => '###OPTIONS###',
46+ 'description' => 'Currently the only task available is "index".'.LF.'Try "/PATH/TO/TYPO3/cli_dispatch.phpsh dlf index" to view more options.',
47+ 'examples' => '/PATH/TO/TYPO3/cli_dispatch.phpsh dlf TASK -ARG1=VALUE1 -ARG2=VALUE2',
48+ 'options' => '',
49+ 'license' => 'GNU GPL - free software!',
50+ 'author' => 'Sebastian Meyer <sebastian.meyer@slub-dresden.de>',
51 );
52
53 // Run parent constructor.
54
55=== modified file 'dlf/common/class.tx_dlf_document.php'
56--- dlf/common/class.tx_dlf_document.php 2012-05-15 07:43:50 +0000
57+++ dlf/common/class.tx_dlf_document.php 2012-08-09 11:45:27 +0000
58@@ -47,6 +47,14 @@
59 protected $asXML = '';
60
61 /**
62+ * This holds the PID for the configuration
63+ *
64+ * @var integer
65+ * @access protected
66+ */
67+ protected $cPid = 0;
68+
69+ /**
70 * This holds the XML file's dmdSec parts with their IDs as array key
71 *
72 * @var array
73@@ -151,14 +159,6 @@
74 protected $mets;
75
76 /**
77- * This holds the PID for the metadata definitions
78- *
79- * @var integer
80- * @access protected
81- */
82- protected $mPid = 0;
83-
84- /**
85 * The holds the total number of pages
86 *
87 * @var integer
88@@ -183,6 +183,14 @@
89 protected $physicalPages = array ();
90
91 /**
92+ * This holds the physical pages' metadata
93+ *
94+ * @var array
95+ * @access protected
96+ */
97+ protected $physicalPagesInfo = array ();
98+
99+ /**
100 * Are the physical pages loaded?
101 * @see $physicalPages
102 *
103@@ -224,12 +232,21 @@
104 protected static $registry = array ();
105
106 /**
107- * This holds the PID for the structure definitions
108- *
109- * @var integer
110- * @access protected
111- */
112- protected $sPid = 0;
113+ * This holds the smLinks between logical and physical structMap
114+ *
115+ * @var array
116+ * @access protected
117+ */
118+ protected $smLinks = array ('l2p' => array (), 'p2l' => array ());
119+
120+ /**
121+ * Are the smLinks loaded?
122+ * @see $smLinks
123+ *
124+ * @var boolean
125+ * @access protected
126+ */
127+ protected $smLinksLoaded = FALSE;
128
129 /**
130 * This holds the logical structure
131@@ -249,6 +266,14 @@
132 protected $tableOfContentsLoaded = FALSE;
133
134 /**
135+ * This holds the toplevel structure's @ID
136+ *
137+ * @var string
138+ * @access protected
139+ */
140+ protected $toplevelId = '';
141+
142+ /**
143 * This holds the UID or the URL of the document
144 *
145 * @var mixed
146@@ -387,6 +412,98 @@
147 /**
148 * This gets details about a logical structure element
149 *
150+ * @access protected
151+ *
152+ * @param SimpleXMLElement $structure: The logical structure node
153+ * @param boolean $recursive: Whether to include the child elements
154+ *
155+ * @return array Array of the element's id, label, type and physical page indexes/mptr link
156+ */
157+ protected function getLogicalStructureInfo(SimpleXMLElement $structure, $recursive = FALSE) {
158+
159+ // Get attributes.
160+ foreach ($structure->attributes() as $attribute => $value) {
161+
162+ $attributes[$attribute] = (string) $value;
163+
164+ }
165+
166+ // Extract identity information.
167+ $details = array ();
168+
169+ $details['id'] = $attributes['ID'];
170+
171+ $details['dmdId'] = (isset($attributes['DMDID']) ? $attributes['DMDID'] : '');
172+
173+ $details['label'] = (isset($attributes['LABEL']) ? $attributes['LABEL'] : '');
174+
175+ $details['volume'] = '';
176+
177+ if (empty($details['label']) && $details['id'] == $this->_getToplevelId()) {
178+
179+ $metadata = $this->getMetadata($details['id']);
180+
181+ if (!empty($metadata['volume'][0])) {
182+
183+ $details['volume'] = $metadata['volume'][0];
184+
185+ }
186+
187+ }
188+
189+ $details['pagination'] = '';
190+
191+ $details['type'] = $attributes['TYPE'];
192+
193+ // Get the physical page or external file this structure element is pointing at.
194+ $details['points'] = '';
195+
196+ // Is there a mptr node?
197+ if (!empty($structure->children('http://www.loc.gov/METS/')->mptr)) {
198+
199+ // Yes. Get the file reference.
200+ $details['points'] = (string) $structure->children('http://www.loc.gov/METS/')->mptr[0]->attributes('http://www.w3.org/1999/xlink')->href;
201+
202+ // Are there any physical pages and is this logical unit linked to at least one of them?
203+ } elseif ($this->_getPhysicalPages() && array_key_exists($details['id'], $this->smLinks['l2p'])) {
204+
205+ $details['points'] = max(intval(array_search($this->smLinks['l2p'][$details['id']][0], $this->physicalPages, TRUE)), 1);
206+
207+ // Get page number of the first page related to this structure element.
208+ $details['pagination'] = $this->physicalPagesInfo[$id]['label'];
209+
210+ // Is this the toplevel structure?
211+ } elseif ($details['id'] == $this->_getToplevelId()) {
212+
213+ // Yes. Point to itself.
214+ $details['points'] = 1;
215+
216+ }
217+
218+ // Keep for later usage.
219+ $this->logicalUnits[$details['id']] = $details;
220+
221+ // Walk the structure recursively? And are there any children of the current element?
222+ if ($recursive && !empty($structure->children('http://www.loc.gov/METS/')->div)) {
223+
224+ $details['children'] = array ();
225+
226+ foreach ($structure->children('http://www.loc.gov/METS/')->div as $child) {
227+
228+ // Repeat for all children.
229+ $details['children'][] = $this->getLogicalStructureInfo($child, $recursive);
230+
231+ }
232+
233+ }
234+
235+ return $details;
236+
237+ }
238+
239+ /**
240+ * This gets details about a logical structure element
241+ *
242 * @access public
243 *
244 * @param string $id: The @ID attribute of the logical structure node
245@@ -394,109 +511,47 @@
246 *
247 * @return array Array of the element's id, label, type and physical page indexes/mptr link
248 */
249- public function getLogicalStructure($id, $recursive = FALSE) {
250+ public function getLogicalStructure($id = '', $recursive = FALSE) {
251
252 // Is the requested logical unit already loaded?
253- if (!$recursive && !empty($this->logicalUnits[$id])) {
254+ if (!$recursive && !empty($id) && !empty($this->logicalUnits[$id])) {
255
256 // Yes. Return it.
257 return $this->logicalUnits[$id];
258
259- } elseif (($_div = $this->mets->xpath('./mets:structMap[@TYPE="LOGICAL"]//mets:div[@ID="'.$id.'"]'))) {
260-
261- // Load physical pages.
262- $this->_getPhysicalPages();
263-
264- $_struct = $_div[0];
265-
266- $this->registerNamespaces($_struct);
267-
268- // Extract identity information.
269- $_details = array ();
270-
271- $_details['id'] = (string) $_struct['ID'];
272-
273- $_details['dmdId'] = (isset($_struct['DMDID']) ? (string) $_struct['DMDID'] : '');
274-
275- $_details['label'] = (isset($_struct['LABEL']) ? (string) $_struct['LABEL'] : '');
276-
277- $_details['volume'] = '';
278-
279- if (empty($_details['label'])) {
280-
281- $_metadata = $this->getMetadata($id);
282-
283- if (!empty($_metadata['volume'][0])) {
284-
285- $_details['volume'] = $_metadata['volume'][0];
286-
287- }
288-
289- }
290-
291- $_details['pagination'] = '';
292-
293- $_details['type'] = (string) $_struct['TYPE'];
294-
295- // Get the physical page or external file this structure element is pointing at.
296- $_details['points'] = '';
297-
298- // Is there a mptr node?
299- if (($_mptr = $_struct->xpath('./mets:mptr[@LOCTYPE="URL"]'))) {
300-
301- // Yes. Get the file reference.
302- $_details['points'] = (string) $_mptr[0]->attributes('http://www.w3.org/1999/xlink')->href;
303-
304- // Are there any physical pages?
305- } elseif ($this->physicalPages) {
306-
307- // Yes. Get first physical page related to this structure element.
308- if (($_smLink = $this->mets->xpath('./mets:structLink/mets:smLink[@xlink:from="'.(string) $_struct['ID'].'"]'))) {
309-
310- $_details['points'] = tx_dlf_helper::array_search_recursive($_smLink[0]->attributes('http://www.w3.org/1999/xlink')->to, $this->physicalPages);
311-
312- // Check if smLink points to the "physSequence" element (in which case it should point to the first image).
313- $_details['points'] = max(intval($_details['points']), 1);
314-
315- // Get page number of the first page related to this structure element.
316- $_details['pagination'] = $this->physicalPages[$_details['points']]['label'];
317-
318- } else {
319-
320- trigger_error('No physical element related to logical element with @ID '.(string) $_struct['ID'], E_USER_WARNING);
321-
322- }
323-
324- // Is this the toplevel structure?
325- } elseif ($_details['id'] == $this->getToplevelId()) {
326-
327- // Yes. Point to itself.
328- $_details['points'] = 1;
329-
330- }
331-
332- // Keep for later usage.
333- $this->logicalUnits[$id] = $_details;
334-
335- // Walk the structure recursively? And are there any children of the current element?
336- if ($recursive && ($_children = $_struct->xpath('./mets:div/@ID'))) {
337-
338- $_details['children'] = array ();
339-
340- foreach ($_children as $_child) {
341-
342- // Repeat for all children.
343- $_details['children'][] = $this->getLogicalStructure((string) $_child, TRUE);
344-
345- }
346-
347- }
348-
349- return $_details;
350+ } elseif (!empty($id)) {
351+
352+ // Get specified logical unit.
353+ $div = $this->mets->xpath('./mets:structMap[@TYPE="LOGICAL"]//mets:div[@ID="'.$id.'"]');
354+
355+ } elseif ($recursive) {
356+
357+ // Get all logical units at top level.
358+ $div = $this->mets->xpath('./mets:structMap[@TYPE="LOGICAL"]/mets:div');
359+
360+ }
361+
362+ if (!empty($div)) {
363+
364+ // Load smLinks.
365+ $this->_getSmLinks();
366+
367+ foreach ($div as $structure) {
368+
369+ // Get logical unit's details.
370+ $this->tableOfContents[] = $this->getLogicalStructureInfo($structure, $recursive);
371+
372+ }
373+
374+ }
375+
376+ if (!empty($this->logicalUnits[$id])) {
377+
378+ return $this->logicalUnits[$id];
379
380 } else {
381
382- trigger_error('There is no logical structure node with @ID '.$id, E_USER_WARNING);
383+// trigger_error('There is no logical structure node with @ID '.$id, E_USER_WARNING);
384
385 return array ();
386
387@@ -510,32 +565,32 @@
388 * @access public
389 *
390 * @param string $id: The @ID attribute of the logical structure node
391- * @param integer $mPid: The PID for the metadata definitions
392- * (defaults to $this->mPid or $this->pid)
393+ * @param integer $cPid: The PID for the metadata definitions
394+ * (defaults to $this->cPid or $this->pid)
395 *
396 * @return array The logical structure node's parsed metadata array
397 */
398- public function getMetadata($id, $mPid = 0) {
399-
400- // Make sure $mPid is a non-negative integer.
401- $mPid = max(intval($mPid), 0);
402-
403- // If $mPid is not given, try to get it elsewhere.
404- if (!$mPid && ($this->mPid || $this->pid)) {
405+ public function getMetadata($id, $cPid = 0) {
406+
407+ // Make sure $cPid is a non-negative integer.
408+ $cPid = max(intval($cPid), 0);
409+
410+ // If $cPid is not given, try to get it elsewhere.
411+ if (!$cPid && ($this->cPid || $this->pid)) {
412
413 // Retain current PID.
414- $mPid = ($this->mPid ? $this->mPid : $this->pid);
415-
416- } elseif (!$mPid) {
417-
418- trigger_error('Invalid PID ('.$mPid.') for metadata definitions', E_USER_WARNING);
419+ $cPid = ($this->cPid ? $this->cPid : $this->pid);
420+
421+ } elseif (!$cPid) {
422+
423+ trigger_error('Invalid PID ('.$cPid.') for metadata definitions', E_USER_WARNING);
424
425 return array ();
426
427 }
428
429 // Get metadata from parsed metadata array if available.
430- if (!empty($this->metadataArray[$id]) && $this->metadataArray[0] == $mPid) {
431+ if (!empty($this->metadataArray[$id]) && $this->metadataArray[0] == $cPid) {
432
433 return $this->metadataArray[$id];
434
435@@ -546,11 +601,8 @@
436 'title' => array (),
437 'title_sorting' => array (),
438 'author' => array (),
439- 'author_sorting' => array (),
440 'place' => array (),
441- 'place_sorting' => array (),
442 'year' => array (),
443- 'year_sorting' => array (),
444 'prod_id' => array (),
445 'record_id' => array (),
446 'opac_id' => array (),
447@@ -631,7 +683,7 @@
448 $_result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
449 'tx_dlf_metadata.index_name AS index_name,tx_dlf_metadata.xpath AS xpath,tx_dlf_metadata.xpath_sorting AS xpath_sorting,tx_dlf_metadata.is_sortable AS is_sortable,tx_dlf_metadata.default_value AS default_value',
450 'tx_dlf_metadata,tx_dlf_formats',
451- 'tx_dlf_metadata.pid='.$mPid.' AND ((tx_dlf_metadata.encoded=tx_dlf_formats.uid AND tx_dlf_formats.type='.$GLOBALS['TYPO3_DB']->fullQuoteStr($this->dmdSec[$_dmdId]['type'], 'tx_dlf_formats').') OR tx_dlf_metadata.encoded=0)'.tx_dlf_helper::whereClause('tx_dlf_metadata').tx_dlf_helper::whereClause('tx_dlf_formats'),
452+ 'tx_dlf_metadata.pid='.$cPid.' AND ((tx_dlf_metadata.encoded=tx_dlf_formats.uid AND tx_dlf_formats.type='.$GLOBALS['TYPO3_DB']->fullQuoteStr($this->dmdSec[$_dmdId]['type'], 'tx_dlf_formats').') OR tx_dlf_metadata.encoded=0)'.tx_dlf_helper::whereClause('tx_dlf_metadata', TRUE).tx_dlf_helper::whereClause('tx_dlf_formats'),
453 '',
454 '',
455 ''
456@@ -678,25 +730,25 @@
457 // Set sorting value if applicable.
458 if (!empty($_metadata[$resArray['index_name']]) && $resArray['is_sortable']) {
459
460- if ($resArray['xpath_sorting'] && ($_values = $_domXPath->evaluate($resArray['xpath_sorting'], $_domNode))) {
461-
462+ if ($resArray['xpath_sorting'] && ($_values = $_domXPath->evaluate($resArray['xpath_sorting'], $_domNode))) {
463+
464 if ($_values instanceof DOMNodeList && $_values->length > 0) {
465
466- $_metadata[$resArray['index_name'].'_sorting'][0] = trim((string) $_values->item(0)->nodeValue);
467-
468+ $_metadata[$resArray['index_name'].'_sorting'][0] = trim((string) $_values->item(0)->nodeValue);
469+
470 } elseif (!($_values instanceof DOMNodeList)) {
471
472 $_metadata[$resArray['index_name'].'_sorting'][0] = trim((string) $_values);
473
474- }
475-
476+ }
477+
478 }
479
480 if (empty($_metadata[$resArray['index_name'].'_sorting'][0])) {
481
482 $_metadata[$resArray['index_name'].'_sorting'][0] = $_metadata[$resArray['index_name']][0];
483
484- }
485+ }
486
487 }
488
489@@ -783,13 +835,13 @@
490 *
491 * @access public
492 *
493- * @param integer $mPid: The PID for the metadata definitions
494+ * @param integer $cPid: The PID for the metadata definitions
495 *
496 * @return array The logical structure node's parsed metadata array
497 */
498- public function getTitledata($mPid = 0) {
499+ public function getTitledata($cPid = 0) {
500
501- $titledata = $this->getMetadata($this->getToplevelId(), $mPid);
502+ $titledata = $this->getMetadata($this->_getToplevelId(), $cPid);
503
504 // Set record identifier for METS file.
505 array_unshift($titledata['record_id'], $this->recordid);
506@@ -799,45 +851,6 @@
507 }
508
509 /**
510- * This returns the ID of the toplevel logical structure node
511- *
512- * @access public
513- *
514- * @return string The logical structure node's ID
515- */
516- public function getToplevelId() {
517-
518- $id = '';
519-
520- // Get all logical structure nodes with metadata.
521- if (($_divs = $this->mets->xpath('./mets:structMap[@TYPE="LOGICAL"]//mets:div[@DMDID]'))) {
522-
523- foreach ($_divs as $_div) {
524-
525- $_id = (string) $_div['ID'];
526-
527- // Are there physical structure nodes for this logical structure?
528- if ($this->mets->xpath('./mets:structLink/mets:smLink[@xlink:from="'.$_id.'"]')) {
529-
530- // Yes. That's what we're looking for.
531- return $_id;
532-
533- } elseif (!$id) {
534-
535- // No. Remember this anyway, but keep looking for a better one.
536- $id = $_id;
537-
538- }
539-
540- }
541-
542- }
543-
544- return $id;
545-
546- }
547-
548- /**
549 * This sets some basic class properties
550 *
551 * @access protected
552@@ -1081,7 +1094,7 @@
553 }
554
555 // Set PID for metadata definitions.
556- $this->mPid = $pid;
557+ $this->cPid = $pid;
558
559 // Set location if inserting new document.
560 $location = '';
561@@ -1135,6 +1148,8 @@
562
563 }
564
565+ $metadata['type'][0] = $structure;
566+
567 // Get UIDs for collections.
568 $collections = array ();
569
570@@ -1218,6 +1233,8 @@
571
572 }
573
574+ $metadata['collection'] = $collections;
575+
576 // Get UID for owner.
577 $owner = 0;
578
579@@ -1271,6 +1288,8 @@
580
581 }
582
583+ $metadata['owner'][0] = $owner;
584+
585 // Load table of contents.
586 $this->_getTableOfContents();
587
588@@ -1295,13 +1314,15 @@
589
590 }
591
592- // Get metadata for lists.
593+ // Get metadata for lists and sorting.
594 $listed = array ();
595
596+ $sortable = array ();
597+
598 $result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
599- 'tx_dlf_metadata.index_name AS index_name',
600+ 'tx_dlf_metadata.index_name AS index_name,tx_dlf_metadata.is_listed AS is_listed,tx_dlf_metadata.is_sortable AS is_sortable',
601 'tx_dlf_metadata',
602- 'tx_dlf_metadata.is_listed=1 AND tx_dlf_metadata.pid='.intval($pid).tx_dlf_helper::whereClause('tx_dlf_metadata'),
603+ '(tx_dlf_metadata.is_listed=1 OR tx_dlf_metadata.is_sortable=1) AND tx_dlf_metadata.pid='.intval($pid).tx_dlf_helper::whereClause('tx_dlf_metadata'),
604 '',
605 '',
606 ''
607@@ -1311,7 +1332,17 @@
608
609 if (!empty($metadata[$resArray['index_name']])) {
610
611- $listed[$resArray['index_name']] = $metadata[$resArray['index_name']];
612+ if ($resArray['is_listed']) {
613+
614+ $listed[$resArray['index_name']] = $metadata[$resArray['index_name']];
615+
616+ }
617+
618+ if ($resArray['is_sortable']) {
619+
620+ $sortable[$resArray['index_name']] = $metadata[$resArray['index_name']][0];
621+
622+ }
623
624 }
625
626@@ -1328,19 +1359,17 @@
627 'purl' => $metadata['purl'][0],
628 'title' => $metadata['title'][0],
629 'title_sorting' => $metadata['title_sorting'][0],
630- 'author' => $metadata['author'][0],
631- 'author_sorting' => $metadata['author_sorting'][0],
632- 'year' => $metadata['year'][0],
633- 'year_sorting' => $metadata['year_sorting'][0],
634- 'place' => $metadata['place'][0],
635- 'place_sorting' => $metadata['place_sorting'][0],
636- 'metadata' => json_encode($listed),
637- 'structure' => $structure,
638+ 'author' => implode('; ', $metadata['author']),
639+ 'year' => implode('; ', $metadata['year']),
640+ 'place' => implode('; ', $metadata['place']),
641+ 'metadata' => serialize($listed),
642+ 'metadata_sorting' => serialize($sortable),
643+ 'structure' => $metadata['type'][0],
644 'partof' => $partof,
645 'volume' => $metadata['volume'][0],
646 'volume_sorting' => $metadata['volume_sorting'][0],
647- 'collections' => $collections,
648- 'owner' => $owner,
649+ 'collections' => $metadata['collection'],
650+ 'owner' => $metadata['owner'][0],
651 'solrcore' => $core,
652 'status' => 0,
653 );
654@@ -1381,6 +1410,19 @@
655 }
656
657 /**
658+ * This returns $this->cPid via __get()
659+ *
660+ * @access protected
661+ *
662+ * @return integer The PID of the metadata definitions
663+ */
664+ protected function _getCPid() {
665+
666+ return $this->cPid;
667+
668+ }
669+
670+ /**
671 * This builds an array of the document's dmdSecs
672 *
673 * @access protected
674@@ -1461,9 +1503,9 @@
675 protected function _getMetadataArray() {
676
677 // Set metadata definitions' PID.
678- $mPid = ($this->mPid ? $this->mPid : $this->pid);
679+ $cPid = ($this->cPid ? $this->cPid : $this->pid);
680
681- if (!$mPid) {
682+ if (!$cPid) {
683
684 trigger_error('No PID for metadata definitions found', E_USER_ERROR);
685
686@@ -1471,21 +1513,21 @@
687
688 }
689
690- if (!$this->metadataArrayLoaded || $this->metadataArray[0] != $mPid) {
691+ if (!$this->metadataArrayLoaded || $this->metadataArray[0] != $cPid) {
692
693 // Get all logical structure nodes with metadata
694 if (($_ids = $this->mets->xpath('./mets:structMap[@TYPE="LOGICAL"]//mets:div[@DMDID]/@ID'))) {
695
696 foreach ($_ids as $_id) {
697
698- $this->metadataArray[(string) $_id] = $this->getMetadata((string) $_id, $mPid);
699+ $this->metadataArray[(string) $_id] = $this->getMetadata((string) $_id, $cPid);
700
701 }
702
703 }
704
705 // Set current PID for metadata definitions.
706- $this->metadataArray[0] = $mPid;
707+ $this->metadataArray[0] = $cPid;
708
709 $this->metadataArrayLoaded = TRUE;
710
711@@ -1509,19 +1551,6 @@
712 }
713
714 /**
715- * This returns $this->mPid via __get()
716- *
717- * @access protected
718- *
719- * @return integer The PID of the metadata definitions
720- */
721- protected function _getMPid() {
722-
723- return $this->mPid;
724-
725- }
726-
727- /**
728 * This returns $this->numPages via __get()
729 *
730 * @access protected
731@@ -1592,13 +1621,13 @@
732 // Get the physical sequence's metadata.
733 $_physNode = $this->mets->xpath('./mets:structMap[@TYPE="PHYSICAL"]/mets:div[@TYPE="physSequence"]');
734
735- $_physSeq[0]['id'] = (string) $_physNode[0]['ID'];
736-
737- $_physSeq[0]['dmdId'] = (isset($_physNode[0]['DMDID']) ? (string) $_physNode[0]['DMDID'] : '');
738-
739- $_physSeq[0]['label'] = (isset($_physNode[0]['ORDERLABEL']) ? (string) $_physNode[0]['ORDERLABEL'] : '');
740-
741- $_physSeq[0]['type'] = (string) $_physNode[0]['TYPE'];
742+ $_physSeq[0] = (string) $_physNode[0]['ID'];
743+
744+ $this->physicalPagesInfo[$_physSeq[0]]['dmdId'] = (isset($_physNode[0]['DMDID']) ? (string) $_physNode[0]['DMDID'] : '');
745+
746+ $this->physicalPagesInfo[$_physSeq[0]]['label'] = (isset($_physNode[0]['ORDERLABEL']) ? (string) $_physNode[0]['ORDERLABEL'] : '');
747+
748+ $this->physicalPagesInfo[$_physSeq[0]]['type'] = (string) $_physNode[0]['TYPE'];
749
750 // Get the file representations from fileSec node.
751 foreach ($_physNode[0]->children('http://www.loc.gov/METS/')->fptr as $_fptr) {
752@@ -1606,7 +1635,7 @@
753 // Check if file has valid @USE attribute.
754 if (!empty($_fileUse[(string) $_fptr->attributes()->FILEID])) {
755
756- $_physSeq[0]['files'][strtolower($_fileUse[(string) $_fptr->attributes()->FILEID])] = (string) $_fptr->attributes()->FILEID;
757+ $this->physicalPagesInfo[$_physSeq[0]]['files'][strtolower($_fileUse[(string) $_fptr->attributes()->FILEID])] = (string) $_fptr->attributes()->FILEID;
758
759 }
760
761@@ -1615,13 +1644,13 @@
762 // Build the physical pages' array from the physical structMap node.
763 foreach ($_pageNodes as $_pageNode) {
764
765- $_pages[(int) $_pageNode['ORDER']]['id'] = (string) $_pageNode['ID'];
766-
767- $_pages[(int) $_pageNode['ORDER']]['dmdId'] = (isset($_pageNode['DMDID']) ? (string) $_pageNode['DMDID'] : '');
768-
769- $_pages[(int) $_pageNode['ORDER']]['label'] = (isset($_pageNode['ORDERLABEL']) ? (string) $_pageNode['ORDERLABEL'] : '');
770-
771- $_pages[(int) $_pageNode['ORDER']]['type'] = (string) $_pageNode['TYPE'];
772+ $_pages[(int) $_pageNode['ORDER']] = (string) $_pageNode['ID'];
773+
774+ $this->physicalPagesInfo[$_pages[(int) $_pageNode['ORDER']]]['dmdId'] = (isset($_pageNode['DMDID']) ? (string) $_pageNode['DMDID'] : '');
775+
776+ $this->physicalPagesInfo[$_pages[(int) $_pageNode['ORDER']]]['label'] = (isset($_pageNode['ORDERLABEL']) ? (string) $_pageNode['ORDERLABEL'] : '');
777+
778+ $this->physicalPagesInfo[$_pages[(int) $_pageNode['ORDER']]]['type'] = (string) $_pageNode['TYPE'];
779
780 // Get the file representations from fileSec node.
781 foreach ($_pageNode->children('http://www.loc.gov/METS/')->fptr as $_fptr) {
782@@ -1629,7 +1658,7 @@
783 // Check if file has valid @USE attribute.
784 if (!empty($_fileUse[(string) $_fptr->attributes()->FILEID])) {
785
786- $_pages[(int) $_pageNode['ORDER']]['files'][strtolower($_fileUse[(string) $_fptr->attributes()->FILEID])] = (string) $_fptr->attributes()->FILEID;
787+ $this->physicalPagesInfo[$_pages[(int) $_pageNode['ORDER']]]['files'][strtolower($_fileUse[(string) $_fptr->attributes()->FILEID])] = (string) $_fptr->attributes()->FILEID;
788
789 }
790
791@@ -1659,6 +1688,27 @@
792 }
793
794 /**
795+ * This gives an array of the document's physical pages metadata
796+ *
797+ * @access protected
798+ *
799+ * @return array Array of pages' type, label and file representations ordered by @ID attribute
800+ */
801+ protected function _getPhysicalPagesInfo() {
802+
803+ // Is there no physical pages array yet?
804+ if (!$this->physicalPagesLoaded) {
805+
806+ // Build physical pages array.
807+ $this->_getPhysicalPages();
808+
809+ }
810+
811+ return $this->physicalPagesInfo;
812+
813+ }
814+
815+ /**
816 * This returns $this->pid via __get()
817 *
818 * @access protected
819@@ -1698,15 +1748,77 @@
820 }
821
822 /**
823- * This returns $this->sPid via __get()
824- *
825- * @access protected
826- *
827- * @return integer The PID of the structure definitions
828- */
829- protected function _getSPid() {
830-
831- return $this->sPid;
832+ * This returns the smLinks between logical and physical structMap
833+ *
834+ * @access protected
835+ *
836+ * @return array The links between logical and physical nodes
837+ */
838+ protected function _getSmLinks() {
839+
840+ if (!$this->smLinksLoaded) {
841+
842+ $smLinks = $this->mets->xpath('./mets:structLink/mets:smLink');
843+
844+ foreach ($smLinks as $smLink) {
845+
846+ $this->smLinks['l2p'][(string) $smLink->attributes('http://www.w3.org/1999/xlink')->from][] = (string) $smLink->attributes('http://www.w3.org/1999/xlink')->to;
847+
848+ $this->smLinks['p2l'][(string) $smLink->attributes('http://www.w3.org/1999/xlink')->to][] = (string) $smLink->attributes('http://www.w3.org/1999/xlink')->from;
849+
850+ }
851+
852+ $this->smLinksLoaded = TRUE;
853+
854+ }
855+
856+ return $this->smLinks;
857+
858+ }
859+
860+ /**
861+ * This returns the ID of the toplevel logical structure node
862+ *
863+ * @access protected
864+ *
865+ * @return string The logical structure node's ID
866+ */
867+ protected function _getToplevelId() {
868+
869+ if (empty($this->toplevelId)) {
870+
871+ // Get all logical structure nodes with metadata.
872+ if (($divs = $this->mets->xpath('./mets:structMap[@TYPE="LOGICAL"]//mets:div[@DMDID]'))) {
873+
874+ // Load smLinks.
875+ $this->_getSmLinks();
876+
877+ foreach ($divs as $div) {
878+
879+ $id = (string) $div['ID'];
880+
881+ // Are there physical structure nodes for this logical structure?
882+ if (array_key_exists($id, $this->smLinks['l2p'])) {
883+
884+ // Yes. That's what we're looking for.
885+ $this->toplevelId = $id;
886+
887+ break;
888+
889+ } elseif (empty($this->toplevelId)) {
890+
891+ // No. Remember this anyway, but keep looking for a better one.
892+ $this->toplevelId = $id;
893+
894+ }
895+
896+ }
897+
898+ }
899+
900+ }
901+
902+ return $this->toplevelId;
903
904 }
905
906@@ -1722,23 +1834,8 @@
907 // Is there no logical structure array yet?
908 if (!$this->tableOfContentsLoaded) {
909
910- // Does the document have a structMap node of type "LOGICAL"?
911- $_ids = $this->mets->xpath('./mets:structMap[@TYPE="LOGICAL"]/mets:div/@ID');
912-
913- if ($_ids) {
914-
915- // Yes. So build the logical structure array from the logical structMap node.
916- foreach ($_ids as $_id) {
917-
918- $this->tableOfContents[] = $this->getLogicalStructure((string) $_id, TRUE);
919-
920- }
921-
922- } else {
923-
924- trigger_error('No logical structure found in document', E_USER_WARNING);
925-
926- }
927+ // Get all logical structures.
928+ $this->getLogicalStructure('', TRUE);
929
930 $this->tableOfContentsLoaded = TRUE;
931
932@@ -1762,7 +1859,7 @@
933 }
934
935 /**
936- * This sets $this->mPid via __set()
937+ * This sets $this->cPid via __set()
938 *
939 * @access protected
940 *
941@@ -1770,24 +1867,9 @@
942 *
943 * @return void
944 */
945- protected function _setMPid($value) {
946-
947- $this->mPid = max(intval($value), 0);
948-
949- }
950-
951- /**
952- * This sets $this->sPid via __set()
953- *
954- * @access protected
955- *
956- * @param integer $value: The new PID for the structure definitions
957- *
958- * @return void
959- */
960- protected function _setSPid($value) {
961-
962- $this->sPid = max(intval($value), 0);
963+ protected function _setCPid($value) {
964+
965+ $this->cPid = max(intval($value), 0);
966
967 }
968
969@@ -1857,7 +1939,7 @@
970
971 }
972
973- if ($this->recordid) {
974+ if (!empty($this->recordid)) {
975
976 $whereClause = 'tx_dlf_documents.record_id='.$GLOBALS['TYPO3_DB']->fullQuoteStr($this->recordid, 'tx_dlf_documents').tx_dlf_helper::whereClause('tx_dlf_documents');
977
978
979=== modified file 'dlf/common/class.tx_dlf_format.php'
980--- dlf/common/class.tx_dlf_format.php 2011-04-01 15:53:16 +0000
981+++ dlf/common/class.tx_dlf_format.php 2012-08-09 11:45:27 +0000
982@@ -1,6 +1,6 @@
983 <?php
984 /***************************************************************
985-* Copyright notice
986+ * Copyright notice
987 *
988 * (c) 2011 Sebastian Meyer <sebastian.meyer@slub-dresden.de>
989 * All rights reserved
990@@ -28,14 +28,14 @@
991
992 /**
993 * Interface 'tx_dlf_format' for the 'dlf' extension.
994- *
995- * @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
996- * @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
997- * @package TYPO3
998- * @subpackage tx_dlf
999- * @access public
1000- * @abstract
1001- */
1002+*
1003+* @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1004+* @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1005+* @package TYPO3
1006+* @subpackage tx_dlf
1007+* @access public
1008+* @abstract
1009+*/
1010 interface tx_dlf_format {
1011
1012 /**
1013@@ -53,8 +53,8 @@
1014 }
1015
1016 /* No xclasses for interfaces!
1017-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_format.php']) {
1018- include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_format.php']);
1019+ if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_format.php']) {
1020+include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_format.php']);
1021 }
1022 */
1023
1024
1025=== modified file 'dlf/common/class.tx_dlf_helper.php'
1026--- dlf/common/class.tx_dlf_helper.php 2012-05-07 09:52:15 +0000
1027+++ dlf/common/class.tx_dlf_helper.php 2012-08-09 11:45:27 +0000
1028@@ -46,6 +46,24 @@
1029 public static $extKey = 'dlf';
1030
1031 /**
1032+ * The encryption key
1033+ * @see encrypt() / decrypt()
1034+ *
1035+ * @var string
1036+ * @access private
1037+ */
1038+ private static $ENCRYPTION_KEY = 'b8b311560d3e6f8dea0aa445995b1b2b';
1039+
1040+ /**
1041+ * The initialization vector for encryption
1042+ * @see encrypt() / decrypt()
1043+ *
1044+ * @var string
1045+ * @access private
1046+ */
1047+ private static $ENCRYPTION_IV = '381416de30a5c970f8f486aa6d5cc932';
1048+
1049+ /**
1050 * Searches the array recursively for a given value and returns the corresponding key if successful
1051 * @see http://php.net/array_search
1052 *
1053@@ -56,6 +74,8 @@
1054 * @param boolean $strict: Check needle's type, too?
1055 *
1056 * @return mixed Returns the needle's key if found and FALSE otherwise
1057+ *
1058+ * @deprecated because of its inefficiency
1059 */
1060 public static function array_search_recursive($needle, $haystack, $strict = FALSE) {
1061
1062@@ -194,6 +214,87 @@
1063 }
1064
1065 /**
1066+ * Decrypt encrypted value with given control hash
1067+ * @see http://yavkata.co.uk/weblog/php/securing-html-hidden-input-fields-using-encryption-and-hashing/
1068+ *
1069+ * @access public
1070+ *
1071+ * @param string $encrypted: The encrypted value to decrypt
1072+ * @param string $hash: The control hash for decrypting
1073+ *
1074+ * @return mixed The decrypted value or NULL on error
1075+ */
1076+ public static function decrypt($encrypted, $hash) {
1077+
1078+ $decrypted = NULL;
1079+
1080+ // Check for PHP extension "mcrypt".
1081+ if (!extension_loaded('mcrypt')) {
1082+
1083+ trigger_error('PHP extension "mcrypt" not available', E_USER_WARNING);
1084+
1085+ return NULL;
1086+
1087+ }
1088+
1089+ if (empty($encrypted) || empty($hash)) {
1090+
1091+ return NULL;
1092+
1093+ }
1094+
1095+ $iv = substr(self::$ENCRYPTION_IV, 0, mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CFB));
1096+
1097+ $decrypted = mcrypt_decrypt(MCRYPT_BLOWFISH, self::$ENCRYPTION_KEY, base64_decode($encrypted), MCRYPT_MODE_CFB, $iv);
1098+
1099+ $salt = substr($hash, 0, 10);
1100+
1101+ $hashed = $salt.substr(sha1($salt.$decrypted), -10);
1102+
1103+ if ($hashed !== $hash) {
1104+
1105+ return NULL;
1106+
1107+ }
1108+
1109+ return $decrypted;
1110+
1111+ }
1112+
1113+ /**
1114+ * Encrypt the given string
1115+ * @see http://yavkata.co.uk/weblog/php/securing-html-hidden-input-fields-using-encryption-and-hashing/
1116+ *
1117+ * @access public
1118+ *
1119+ * @param string $string: The string to encrypt
1120+ *
1121+ * @return array Array with encrypted string and control hash
1122+ */
1123+ public static function encrypt($string) {
1124+
1125+ // Check for PHP extension "mcrypt".
1126+ if (!extension_loaded('mcrypt')) {
1127+
1128+ trigger_error('PHP extension "mcrypt" not available', E_USER_WARNING);
1129+
1130+ return NULL;
1131+
1132+ }
1133+
1134+ $iv = substr(self::$ENCRYPTION_IV, 0, mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CFB));
1135+
1136+ $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, self::$ENCRYPTION_KEY, $string, MCRYPT_MODE_CFB, $iv));
1137+
1138+ $salt = substr(md5(uniqid(rand(), TRUE)), 0, 10);
1139+
1140+ $hash = $salt.substr(sha1($salt.$string), -10);
1141+
1142+ return array ('encrypted' => $encrypted, 'hash' => $hash);
1143+
1144+ }
1145+
1146+ /**
1147 * Get a backend user object (even in frontend mode)
1148 *
1149 * @access public
1150@@ -234,28 +335,36 @@
1151 *
1152 * @param integer $uid: The UID of the record
1153 * @param string $table: Get the "index_name" from this table
1154- * @param string $pid: Get the "index_name" from this page
1155+ * @param integer $pid: Get the "index_name" from this page
1156 *
1157 * @return string "index_name" for the given UID
1158 */
1159- public static function getIndexName($uid, $table, $pid) {
1160+ public static function getIndexName($uid, $table, $pid = -1) {
1161
1162 $uid = max(intval($uid), 0);
1163
1164- $pid = max(intval($pid), 0);
1165-
1166- if (!$uid || !$pid || !in_array($table, array ('tx_dlf_collections', 'tx_dlf_libraries', 'tx_dlf_metadata', 'tx_dlf_structures'))) {
1167-
1168- trigger_error('At least one argument is not valid: UID='.$uid.' PID='.$pid.' TABLE='.$table, E_USER_WARNING);
1169+ if (!$uid || !in_array($table, array ('tx_dlf_collections', 'tx_dlf_libraries', 'tx_dlf_metadata', 'tx_dlf_structures', 'tx_dlf_solrcores'))) {
1170+
1171+ trigger_error('At least one argument is not valid: UID='.$uid.' or TABLE='.$table, E_USER_WARNING);
1172
1173 return '';
1174
1175 }
1176
1177+ $where = '';
1178+
1179+ if ($pid !== -1) {
1180+
1181+ $pid = max(intval($pid), 0);
1182+
1183+ $where = ' AND '.$table.'.pid='.$pid;
1184+
1185+ }
1186+
1187 $_result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
1188 $table.'.index_name AS index_name',
1189 $table,
1190- $table.'.uid='.$uid.' AND '.$table.'.pid='.$pid.self::whereClause($table),
1191+ $table.'.uid='.$uid.$where.self::whereClause($table),
1192 '',
1193 '',
1194 '1'
1195@@ -446,23 +555,6 @@
1196 }
1197
1198 /**
1199- * Check if given internal "index_name" is translatable
1200- *
1201- * @access public
1202- *
1203- * @param string $index_name: The internal "index_name" to translate
1204- * @param string $table: Get the translation from this table
1205- * @param string $pid: Get the translation from this page
1206- *
1207- * @return boolean Is $index_name translatable?
1208- */
1209- public static function isTranslatable($index_name, $table, $pid = 0) {
1210-
1211- return self::translate($index_name, $table, $pid, TRUE);
1212-
1213- }
1214-
1215- /**
1216 * Load value from user's session.
1217 *
1218 * @access public
1219@@ -680,11 +772,10 @@
1220 * @param string $index_name: The internal "index_name" to translate
1221 * @param string $table: Get the translation from this table
1222 * @param string $pid: Get the translation from this page
1223- * @param boolean $checkOnly: Don't translate, only check for translation
1224 *
1225 * @return mixed Translated label or boolean value if $checkOnly is set
1226 */
1227- public static function translate($index_name, $table, $pid, $checkOnly = FALSE) {
1228+ public static function translate($index_name, $table, $pid) {
1229
1230 static $labels = array ();
1231
1232@@ -764,27 +855,11 @@
1233
1234 if (!empty($labels[$table][$pid][$GLOBALS['TSFE']->sys_language_content][$index_name])) {
1235
1236- if ($checkOnly) {
1237-
1238- return TRUE;
1239-
1240- } else {
1241-
1242- return $labels[$table][$pid][$GLOBALS['TSFE']->sys_language_content][$index_name];
1243-
1244- }
1245+ return $labels[$table][$pid][$GLOBALS['TSFE']->sys_language_content][$index_name];
1246
1247 } else {
1248
1249- if ($checkOnly) {
1250-
1251- return FALSE;
1252-
1253- } else {
1254-
1255- return $index_name;
1256-
1257- }
1258+ return $index_name;
1259
1260 }
1261
1262@@ -796,10 +871,11 @@
1263 * @access public
1264 *
1265 * @param string $table: Table name as defined in TCA
1266+ * @param boolean $showHidden: Ignore the hidden flag?
1267 *
1268 * @return string Additional WHERE clause
1269 */
1270- public static function whereClause($table) {
1271+ public static function whereClause($table, $showHidden = FALSE) {
1272
1273 if (TYPO3_MODE === 'FE') {
1274
1275@@ -810,10 +886,19 @@
1276
1277 }
1278
1279+ // Should we ignore the record's hidden flag?
1280+ $ignoreHide = -1;
1281+
1282+ if ($showHidden) {
1283+
1284+ $ignoreHide = 1;
1285+
1286+ }
1287+
1288 // $GLOBALS['TSFE']->sys_page is not always available in frontend.
1289 if (is_object($GLOBALS['TSFE']->sys_page)) {
1290
1291- return $GLOBALS['TSFE']->sys_page->enableFields($table);
1292+ return $GLOBALS['TSFE']->sys_page->enableFields($table, $ignoreHide);
1293
1294 } else {
1295
1296@@ -821,7 +906,7 @@
1297
1298 $GLOBALS['TSFE']->includeTCA();
1299
1300- return $t3lib_pageSelect->enableFields($table);
1301+ return $t3lib_pageSelect->enableFields($table, $ignoreHide);
1302
1303 }
1304
1305
1306=== modified file 'dlf/common/class.tx_dlf_indexing.php'
1307--- dlf/common/class.tx_dlf_indexing.php 2012-04-30 16:05:21 +0000
1308+++ dlf/common/class.tx_dlf_indexing.php 2012-08-09 11:45:27 +0000
1309@@ -38,6 +38,15 @@
1310 class tx_dlf_indexing {
1311
1312 /**
1313+ * Array of autocompletable metadata
1314+ * @see loadIndexConf()
1315+ *
1316+ * @var array
1317+ * @access protected
1318+ */
1319+ protected static $autocompleted = array ();
1320+
1321+ /**
1322 * The extension key
1323 *
1324 * @var string
1325@@ -396,7 +405,7 @@
1326
1327 // Get the metadata indexing options.
1328 $_result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
1329- 'tx_dlf_metadata.index_name AS index_name,tx_dlf_metadata.tokenized AS tokenized,tx_dlf_metadata.stored AS stored,tx_dlf_metadata.indexed AS indexed,tx_dlf_metadata.is_sortable AS is_sortable,tx_dlf_metadata.is_facet AS is_facet,tx_dlf_metadata.is_listed AS is_listed,tx_dlf_metadata.boost AS boost',
1330+ 'tx_dlf_metadata.index_name AS index_name,tx_dlf_metadata.tokenized AS tokenized,tx_dlf_metadata.stored AS stored,tx_dlf_metadata.indexed AS indexed,tx_dlf_metadata.is_sortable AS is_sortable,tx_dlf_metadata.is_facet AS is_facet,tx_dlf_metadata.is_listed AS is_listed,tx_dlf_metadata.autocomplete AS autocomplete,tx_dlf_metadata.boost AS boost',
1331 'tx_dlf_metadata',
1332 'tx_dlf_metadata.pid='.intval($pid).tx_dlf_helper::whereClause('tx_dlf_metadata'),
1333 '',
1334@@ -436,9 +445,15 @@
1335
1336 }
1337
1338+ if ($_indexing['autocomplete']) {
1339+
1340+ self::$autocompleted[] = $_indexing['index_name'];
1341+
1342+ }
1343+
1344 if ($_indexing['boost'] > 0.0) {
1345
1346- self::$fieldboost[$_indexing['index_name']] = $_indexing['boost'];
1347+ self::$fieldboost[$_indexing['index_name']] = floatval($_indexing['boost']);
1348
1349 } else {
1350
1351@@ -502,12 +517,6 @@
1352
1353 $solrDoc->setField('title', $metadata['title'][0], self::$fieldboost['title']);
1354
1355- $solrDoc->setField('author', $metadata['author'], self::$fieldboost['author']);
1356-
1357- $solrDoc->setField('year', $metadata['year'], self::$fieldboost['year']);
1358-
1359- $solrDoc->setField('place', $metadata['place'], self::$fieldboost['place']);
1360-
1361 $solrDoc->setField('volume', $metadata['volume'][0], self::$fieldboost['volume']);
1362
1363 foreach ($metadata as $index_name => $data) {
1364@@ -536,6 +545,13 @@
1365
1366 }
1367
1368+ if (in_array($index_name, self::$autocompleted)) {
1369+
1370+ // Add autocomplete values to index.
1371+ $solrDoc->setField($index_name.'_suggest', $data);
1372+
1373+ }
1374+
1375 }
1376
1377 }
1378
1379=== modified file 'dlf/common/class.tx_dlf_list.php'
1380--- dlf/common/class.tx_dlf_list.php 2012-03-15 15:53:25 +0000
1381+++ dlf/common/class.tx_dlf_list.php 2012-08-09 11:45:27 +0000
1382@@ -111,6 +111,46 @@
1383 }
1384
1385 /**
1386+ * This moves the element at the given position up or down
1387+ *
1388+ * @access public
1389+ *
1390+ * @param integer $position: Numeric position for moving
1391+ * @param integer $steps: Amount of steps to move up or down
1392+ *
1393+ * @return void
1394+ */
1395+ public function move($position, $steps) {
1396+
1397+ $position = intval($position);
1398+
1399+ // Check if list position is valid.
1400+ if ($position < 0 || $position >= $this->count) {
1401+
1402+ trigger_error('Invalid list position '.$position, E_USER_WARNING);
1403+
1404+ return;
1405+
1406+ }
1407+
1408+ $steps = intval($steps);
1409+
1410+ // Check if moving given amount of steps is possible.
1411+ if (($position + $steps) < 0 || ($position + $steps) >= $this->count) {
1412+
1413+ trigger_error('Element at position '.$position.' can not be moved '.$steps.' steps', E_USER_WARNING);
1414+
1415+ return;
1416+
1417+ }
1418+
1419+ $element = $this->remove($position);
1420+
1421+ $this->add(array ($element), $position + $steps);
1422+
1423+ }
1424+
1425+ /**
1426 * This moves the element at the given position up
1427 *
1428 * @access public
1429@@ -121,26 +161,14 @@
1430 */
1431 public function moveUp($position) {
1432
1433- $position = intval($position);
1434-
1435- if ($position < 1 || $position >= $this->count) {
1436-
1437- trigger_error('No valid list position for moving up', E_USER_WARNING);
1438-
1439- return;
1440-
1441- }
1442-
1443- $element = $this->remove($position);
1444-
1445- $this->add(array ($element), $position - 1);
1446+ $this->move($position, -1);
1447
1448 }
1449
1450 /**
1451 * This moves the element at the given position down
1452 *
1453- * @access public
1454+ * @access public
1455 *
1456 * @param integer $position: Numeric position for moving
1457 *
1458@@ -148,19 +176,7 @@
1459 */
1460 public function moveDown($position) {
1461
1462- $position = intval($position);
1463-
1464- if ($position < 0 || $position >= ($this->count - 1)) {
1465-
1466- trigger_error('No valid list position for moving down', E_USER_WARNING);
1467-
1468- return;
1469-
1470- }
1471-
1472- $element = $this->remove($position);
1473-
1474- $this->add(array ($element), $position + 1);
1475+ $this->move($position, 1);
1476
1477 }
1478
1479@@ -208,6 +224,60 @@
1480 }
1481
1482 /**
1483+ * This sorts the current list by the given field
1484+ *
1485+ * @access public
1486+ *
1487+ * @param string $by: Sort the list by this field
1488+ * @param boolean $asc: Sort ascending?
1489+ *
1490+ * @return void
1491+ */
1492+ public function sort($by, $asc = TRUE) {
1493+
1494+ $newOrder = array ();
1495+
1496+ $nonSortable = array ();
1497+
1498+ foreach ($this->elements as $num => $element) {
1499+
1500+ // Is this element sortable?
1501+ if (!empty($element['sorting'][$by])) {
1502+
1503+ $newOrder[$element['sorting'][$by].str_pad($num, 6, '0', STR_PAD_LEFT)] = $element;
1504+
1505+ } else {
1506+
1507+ $nonSortable[] = $element;
1508+
1509+ }
1510+
1511+ }
1512+
1513+ // Reorder elements.
1514+ if ($asc) {
1515+
1516+ ksort($newOrder, SORT_LOCALE_STRING);
1517+
1518+ } else {
1519+
1520+ krsort($newOrder, SORT_LOCALE_STRING);
1521+
1522+ }
1523+
1524+ // Add non sortable elements to the end of the list.
1525+ $newOrder = array_merge(array_values($newOrder), $nonSortable);
1526+
1527+ // Check if something is missing.
1528+ if ($this->count == count($newOrder)) {
1529+
1530+ $this->elements = $newOrder;
1531+
1532+ }
1533+
1534+ }
1535+
1536+ /**
1537 * This returns $this->count via __get()
1538 *
1539 * @access protected
1540
1541=== modified file 'dlf/common/class.tx_dlf_mods.php'
1542--- dlf/common/class.tx_dlf_mods.php 2012-04-30 16:05:21 +0000
1543+++ dlf/common/class.tx_dlf_mods.php 2012-08-09 11:45:27 +0000
1544@@ -1,6 +1,6 @@
1545 <?php
1546 /***************************************************************
1547-* Copyright notice
1548+ * Copyright notice
1549 *
1550 * (c) 2011 Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1551 * All rights reserved
1552@@ -28,13 +28,13 @@
1553
1554 /**
1555 * Metadata format class 'tx_dlf_mods' for the 'dlf' extension.
1556- *
1557- * @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1558- * @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1559- * @package TYPO3
1560- * @subpackage tx_dlf
1561- * @access public
1562- */
1563+*
1564+* @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1565+* @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1566+* @package TYPO3
1567+* @subpackage tx_dlf
1568+* @access public
1569+*/
1570 class tx_dlf_mods implements tx_dlf_format {
1571
1572 /**
1573
1574=== modified file 'dlf/common/class.tx_dlf_module.php'
1575--- dlf/common/class.tx_dlf_module.php 2012-04-30 16:05:21 +0000
1576+++ dlf/common/class.tx_dlf_module.php 2012-08-09 11:45:27 +0000
1577@@ -1,6 +1,6 @@
1578 <?php
1579 /***************************************************************
1580-* Copyright notice
1581+ * Copyright notice
1582 *
1583 * (c) 2011 Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1584 * All rights reserved
1585@@ -28,14 +28,14 @@
1586
1587 /**
1588 * Base class 'tx_dlf_module' for the 'dlf' extension.
1589- *
1590- * @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1591- * @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1592- * @package TYPO3
1593- * @subpackage tx_dlf
1594- * @access public
1595- * @abstract
1596- */
1597+*
1598+* @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1599+* @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1600+* @package TYPO3
1601+* @subpackage tx_dlf
1602+* @access public
1603+* @abstract
1604+*/
1605 abstract class tx_dlf_module extends t3lib_SCbase {
1606
1607 public $extKey = 'dlf';
1608@@ -109,7 +109,7 @@
1609
1610 $GLOBALS['BE_USER']->modAccess($GLOBALS['MCONF'], 1);
1611
1612- $GLOBALS['LANG']->includeLLFile('EXT:dlf/modules/'.$this->modPath.'locallang.xml');
1613+ $GLOBALS['LANG']->includeLLFile('EXT:'.$this->extKey.'/modules/'.$this->modPath.'locallang.xml');
1614
1615 $this->setMOD_MENU();
1616
1617@@ -121,15 +121,15 @@
1618
1619 $this->doc = t3lib_div::makeInstance('template');
1620
1621- $this->doc->setModuleTemplate('EXT:dlf/modules/'.$this->modPath.'template.tmpl');
1622+ $this->doc->setModuleTemplate('EXT:'.$this->extKey.'/modules/'.$this->modPath.'template.tmpl');
1623
1624 $this->doc->getPageRenderer()->addCssFile(t3lib_extMgm::extRelPath($this->extKey) . 'res/backend.css');
1625
1626 $this->doc->backPath = $GLOBALS['BACK_PATH'];
1627
1628- $this->doc->bodyTagAdditions = 'class="ext-dlf-modules"';
1629+ $this->doc->bodyTagAdditions = 'class="ext-'.$this->extKey.'-modules"';
1630
1631- $this->doc->form = '<form action="" method="post" enctype="multipart/form-data">';
1632+ $this->doc->form = '<form action="" method="post" enctype="multipart/form-data">';
1633
1634 $this->data = t3lib_div::_GPmerged($this->prefixId);
1635
1636@@ -147,13 +147,13 @@
1637 // Set $this->MOD_MENU array here or leave empty.
1638
1639 /* Example code:
1640- $this->MOD_MENU = array (
1641- 'function' => array (
1642- '1' => $GLOBALS['LANG']->getLL('function1'),
1643- '2' => $GLOBALS['LANG']->getLL('function2'),
1644- '3' => $GLOBALS['LANG']->getLL('function3'),
1645- )
1646- ); */
1647+ $this->MOD_MENU = array (
1648+ 'function' => array (
1649+ '1' => $GLOBALS['LANG']->getLL('function1'),
1650+ '2' => $GLOBALS['LANG']->getLL('function2'),
1651+ '3' => $GLOBALS['LANG']->getLL('function3'),
1652+ )
1653+ ); */
1654
1655 }
1656
1657@@ -179,19 +179,19 @@
1658
1659 // Add Javascript for function menu.
1660 $this->doc->JScode .= '
1661- <script type="text/javascript">
1662- script_ended = 0;
1663- function jumpToUrl(URL) {
1664- document.location = URL;
1665- }
1666- </script>
1667- ';
1668+ <script type="text/javascript">
1669+ script_ended = 0;
1670+ function jumpToUrl(URL) {
1671+ document.location = URL;
1672+ }
1673+ </script>
1674+ ';
1675
1676 // Add Javascript for convenient module switch.
1677 $this->doc->postCode .= '
1678- <script type="text/javascript">
1679- script_ended = 1;
1680- </script>
1681+ <script type="text/javascript">
1682+ script_ended = 1;
1683+ </script>
1684 ';
1685
1686 // Render output.
1687@@ -233,8 +233,8 @@
1688 }
1689
1690 /* No xclasses for abstract classes!
1691-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_module.php']) {
1692- include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_module.php']);
1693+ if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_module.php']) {
1694+include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_module.php']);
1695 }
1696 */
1697
1698
1699=== modified file 'dlf/common/class.tx_dlf_plugin.php'
1700--- dlf/common/class.tx_dlf_plugin.php 2012-03-09 10:17:07 +0000
1701+++ dlf/common/class.tx_dlf_plugin.php 2012-08-09 11:45:27 +0000
1702@@ -1,6 +1,6 @@
1703 <?php
1704 /***************************************************************
1705-* Copyright notice
1706+ * Copyright notice
1707 *
1708 * (c) 2011 Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1709 * All rights reserved
1710@@ -28,14 +28,14 @@
1711
1712 /**
1713 * Base class 'tx_dlf_plugin' for the 'dlf' extension.
1714- *
1715- * @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1716- * @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1717- * @package TYPO3
1718- * @subpackage tx_dlf
1719- * @access public
1720- * @abstract
1721- */
1722+*
1723+* @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1724+* @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1725+* @package TYPO3
1726+* @subpackage tx_dlf
1727+* @access public
1728+* @abstract
1729+*/
1730 abstract class tx_dlf_plugin extends tslib_pibase {
1731
1732 public $extKey = 'dlf';
1733@@ -77,7 +77,27 @@
1734 */
1735 protected function init(array $conf) {
1736
1737- // Read general TS configuration
1738+ // Read FlexForm configuration.
1739+ $flexFormConf = array ();
1740+
1741+ $this->cObj->readFlexformIntoConf($this->cObj->data['pi_flexform'], $flexFormConf);
1742+
1743+ if (!empty($flexFormConf)) {
1744+
1745+ $conf = t3lib_div::array_merge_recursive_overrule($flexFormConf, $conf);
1746+
1747+ }
1748+
1749+ // Read plugin TS configuration.
1750+ $pluginConf = $GLOBALS['TSFE']->tmpl->setup['plugin.'][get_class($this).'.'];
1751+
1752+ if (is_array($pluginConf)) {
1753+
1754+ $conf = t3lib_div::array_merge_recursive_overrule($pluginConf, $conf);
1755+
1756+ }
1757+
1758+ // Read general TS configuration.
1759 $generalConf = $GLOBALS['TSFE']->tmpl->setup['plugin.'][$this->prefixId.'.'];
1760
1761 if (is_array($generalConf)) {
1762@@ -86,7 +106,7 @@
1763
1764 }
1765
1766- // Read extension configuration
1767+ // Read extension configuration.
1768 $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf'][$this->extKey]);
1769
1770 if (is_array($extConf)) {
1771@@ -95,7 +115,7 @@
1772
1773 }
1774
1775- // Read TYPO3_CONF_VARS configuration
1776+ // Read TYPO3_CONF_VARS configuration.
1777 $varsConf = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey];
1778
1779 if (is_array($varsConf)) {
1780@@ -104,17 +124,6 @@
1781
1782 }
1783
1784- // Read FlexForm configuration
1785- $flexFormConf = array ();
1786-
1787- $this->cObj->readFlexformIntoConf($this->cObj->data['pi_flexform'], $flexFormConf);
1788-
1789- if (!empty($flexFormConf)) {
1790-
1791- $conf = t3lib_div::array_merge_recursive_overrule($conf, $flexFormConf);
1792-
1793- }
1794-
1795 $this->conf = $conf;
1796
1797 // Set default plugin variables.
1798@@ -135,7 +144,7 @@
1799 protected function loadDocument() {
1800
1801 // Check for required variable.
1802- if (!empty($this->piVars['id'])) {
1803+ if (!empty($this->piVars['id']) && !empty($this->conf['pages'])) {
1804
1805 // Should we exclude documents from other pages than $this->conf['pages']?
1806 $pid = (!empty($this->conf['excludeOther']) ? intval($this->conf['pages']) : 0);
1807@@ -145,22 +154,28 @@
1808
1809 if (!$this->doc->ready) {
1810
1811+ // Destroy the incomplete object.
1812 trigger_error('Failed to load document with UID '.$this->piVars['id'], E_USER_ERROR);
1813
1814 $this->doc = NULL;
1815
1816+ } else {
1817+
1818+ // Set configuration PID.
1819+ $this->doc->cPid = $this->conf['pages'];
1820+
1821 }
1822
1823 } elseif (!empty($this->piVars['recordId'])) {
1824
1825 // Get UID of document with given record identifier.
1826 $result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
1827- 'tx_dlf_documents.uid',
1828- 'tx_dlf_documents',
1829- 'tx_dlf_documents.record_id='.$GLOBALS['TYPO3_DB']->fullQuoteStr($this->piVars['recordId'], 'tx_dlf_documents').tx_dlf_helper::whereClause('tx_dlf_documents'),
1830- '',
1831- '',
1832- '1'
1833+ 'tx_dlf_documents.uid',
1834+ 'tx_dlf_documents',
1835+ 'tx_dlf_documents.record_id='.$GLOBALS['TYPO3_DB']->fullQuoteStr($this->piVars['recordId'], 'tx_dlf_documents').tx_dlf_helper::whereClause('tx_dlf_documents'),
1836+ '',
1837+ '',
1838+ '1'
1839 );
1840
1841 if ($GLOBALS['TYPO3_DB']->sql_num_rows($result) == 1) {
1842@@ -184,7 +199,7 @@
1843
1844 } else {
1845
1846- trigger_error('No UID given for document', E_USER_ERROR);
1847+ trigger_error('No UID or PID given for document', E_USER_ERROR);
1848
1849 }
1850
1851@@ -289,8 +304,8 @@
1852 }
1853
1854 /* No xclasses for abstract classes!
1855-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_plugin.php']) {
1856- include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_plugin.php']);
1857+ if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_plugin.php']) {
1858+include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_plugin.php']);
1859 }
1860 */
1861
1862
1863=== modified file 'dlf/common/class.tx_dlf_solr.php'
1864--- dlf/common/class.tx_dlf_solr.php 2012-03-30 09:14:14 +0000
1865+++ dlf/common/class.tx_dlf_solr.php 2012-08-09 11:45:27 +0000
1866@@ -1,6 +1,6 @@
1867 <?php
1868 /***************************************************************
1869-* Copyright notice
1870+ * Copyright notice
1871 *
1872 * (c) 2011 Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1873 * All rights reserved
1874@@ -21,20 +21,21 @@
1875 *
1876 * This copyright notice MUST APPEAR in all copies of the script!
1877 ***************************************************************/
1878-
1879+// TODO: Clean up and reduce code duplication. Consider switching to Solarium.
1880 /**
1881 * [CLASS/FUNCTION INDEX of SCRIPT]
1882- */
1883+*/
1884
1885 /**
1886 * Solr class 'tx_dlf_solr' for the 'dlf' extension.
1887- *
1888- * @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1889- * @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1890- * @package TYPO3
1891- * @subpackage tx_dlf
1892- * @access public
1893- */
1894+*
1895+* @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
1896+* @author Henrik Lochmann <dev@mentalmotive.com>
1897+* @copyright Copyright (c) 2011, Sebastian Meyer, SLUB Dresden
1898+* @package TYPO3
1899+* @subpackage tx_dlf
1900+* @access public
1901+*/
1902 class tx_dlf_solr {
1903
1904 /**
1905@@ -46,6 +47,41 @@
1906 public static $extKey = 'dlf';
1907
1908 /**
1909+ * Returns the request URL for a specific Solr core
1910+ *
1911+ * @access public
1912+ *
1913+ * @param string $core: Name of the core to load
1914+ *
1915+ * @return string The request URL for a specific Solr core
1916+ */
1917+ public static function getSolrUrl($core = '') {
1918+
1919+ // Extract extension configuration.
1920+ $conf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf'][self::$extKey]);
1921+
1922+ // Derive Solr host name.
1923+ $host = ($conf['solrHost'] ? $conf['solrHost'] : 'localhost');
1924+
1925+ // Prepend username and password to hostname.
1926+ if ($conf['solrUser'] && $conf['solrPass']) {
1927+
1928+ $host = $conf['solrUser'].':'.$conf['solrPass'].'@'.$host;
1929+
1930+ }
1931+
1932+ // Set port if not set.
1933+ $port = t3lib_div::intInRange($conf['solrPort'], 1, 65535, 8180);
1934+
1935+ // Append core name to path.
1936+ $path = trim($conf['solrPath'], '/').'/'.$core;
1937+
1938+ // Return entire request URL.
1939+ return 'http://'.$host.':'.$port.'/'.$path;
1940+
1941+ }
1942+
1943+ /**
1944 * Get SolrPhpClient service object and establish connection to Solr server
1945 * @see EXT:dlf/lib/SolrPhpClient/Apache/Solr/Service.php
1946 *
1947@@ -82,20 +118,9 @@
1948 // Get core name if UID is given.
1949 if (t3lib_div::testInt($core)) {
1950
1951- $result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
1952- 'tx_dlf_solrcores.index_name AS index_name',
1953- 'tx_dlf_solrcores',
1954- 'tx_dlf_solrcores.uid='.intval($core).tx_dlf_helper::whereClause('tx_dlf_solrcores'),
1955- '',
1956- '',
1957- '1'
1958- );
1959-
1960- if ($GLOBALS['TYPO3_DB']->sql_num_rows($result)) {
1961-
1962- list ($core) = $GLOBALS['TYPO3_DB']->sql_fetch_row($result);
1963-
1964- } else {
1965+ $core = tx_dlf_helper::getIndexName($core, 'tx_dlf_solrcores');
1966+
1967+ if (empty($core)) {
1968
1969 trigger_error('Could not find Solr core with UID '.$core, E_USER_NOTICE);
1970
1971@@ -160,13 +185,14 @@
1972 *
1973 * @access protected
1974 */
1975- protected function __construct() {}
1976+ protected function __construct() {
1977+ }
1978
1979 }
1980
1981 /* No xclasses for static classes!
1982-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_solr.php']) {
1983- include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_solr.php']);
1984+ if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_solr.php']) {
1985+include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/common/class.tx_dlf_solr.php']);
1986 }
1987 */
1988
1989
1990=== modified file 'dlf/doc/METS_Anwendungsprofil_2.0.xml'
1991--- dlf/doc/METS_Anwendungsprofil_2.0.xml 2011-03-09 15:36:27 +0000
1992+++ dlf/doc/METS_Anwendungsprofil_2.0.xml 2012-08-09 11:45:27 +0000
1993@@ -1,4720 +1,4342 @@
1994-<?xml version="1.0" encoding="UTF-8"?>
1995-
1996-<!--
1997- ===========================================================================
1998- == zvdd/DFG-Viewer METS-Profil, Version 2.0, 16.04.2009
1999- ===========================================================================
2000-
2001- ===========================================================================
2002- == Autoren: Markus Enders, Stefan E. Funk
2003- ===========================================================================
2004-
2005- ===========================================================================
2006- == TODO
2007- ===========================================================================
2008-
2009- ===========================================================================
2010- == CHANGELOG
2011- ===========================================================================
2012-
2013- Version 2.0, 16.04.2009, bearbeitet von Stefan E. Funk
2014- - Kleine Korrekturen (Typos, etc.).
2015- Version 2.0, 01.12.2008, bearbeitet von Stefan E. Funk
2016- - Link zum Downlaod des Gesamt-Dokuments erläutert (erst logische, dann
2017- physische Struct-Map).
2018- - Komplexes Dokumentmodell:
2019- - LABEL für die Strukturelemente erläutert und Beispiele ergänzt.
2020- - Verweis auf die LoC-Strukturtypen entfernt.
2021- - Verweis auf das DFG-Viewer Strukturdatenset hinzugefügt.
2022- - Beispielnummerierung korrigiert.
2023- - URLs ergänzt.
2024-
2025- Version 2.0, 24.11.2008, bearbeitet von Stefan E. Funk
2026- - Adresse ergänzt.
2027-
2028- Version 2.0, 21.11.2008, bearbeitet von Stefan E. Funk
2029- - Version 2.0 fertiggestellt.
2030-
2031- =========================================================================== -->
2032-
2033-<METS_Profile xmlns="http://www.loc.gov/METS_Profile/" xmlns:mets="http://www.loc.gov/METS/"
2034- xmlns:mods="http://www.loc.gov/mods/v3" xmlns:premis="http://www.loc.gov/standards/premis/v1"
2035- xmlns:xlink="http://www.w3c.org/1999/xlink"
2036- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2037- xsi:schemaLocation="http://www.loc.gov/METS_Profile/ http://www.loc.gov/standards/mets/profile_docs/mets.profile.v1-2.xsd http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/mets.xsd http://www.loc.gov/standards/premis/v1 http://www.loc.gov/standards/premis/v1/PREMIS-v1-1.xsd http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd http://www.w3.org/1999/xlink http://www.loc.gov/standards/mets/xlink.xsd">
2038-
2039- <URI LOCTYPE="URL">http://dfg-viewer.de/fileadmin/groups/dfgviewer/METS_Anwendungsprofil_2.0.xml</URI>
2040-
2041- <title>zvdd/DFG-Viewer METS-Profil &#8211; Version 2.0</title>
2042-
2043- <abstract>Dieses METS Profil beschreibt das Datenformat für den DFG-Viewer und definiert darüber
2044- hinausgehende Erweiterungen für das zvdd-Portal. Dokumente, die diesem Profil entsprechen,
2045- können sowohl durch den DFG-Viewer angezeigt als auch durch das zvdd-Portal verarbeitet und
2046- indexiert werden. Zu beachten ist, dass sämtliche enthaltene Beispiele das jeweilige
2047- METS-Dokument nur auschnittsweise wiedergeben. Einige komplette Beispiele finden sich in der
2048- XML-Version des Profils am Ende des Abschnitts &lt;Appendix&gt;.</abstract>
2049-
2050- <date>2009-04-16T12:00:00</date>
2051-
2052- <contact>
2053- <name>Stefan E. Funk</name>
2054- <institution>Niedersächsische Staats- und Universitätsbibliothek</institution>
2055- <address>Papendiek 14, 37073 Göttingen, Germany</address>
2056- <phone>+49 (0) 551 12170</phone>
2057- <email>funk@sub.uni-goettingen.de</email>
2058- </contact>
2059-
2060- <related_profile>Dieses Profil ist eigenständig; keine anderen METS-Profile sind mit diesem
2061- Profil verknüpft.</related_profile>
2062-
2063- <!--
2064- ***************************************************************************
2065- ** Extension schemas
2066- *************************************************************************** -->
2067-
2068- <extension_schema>
2069- <name>Metadata Object and Description Schema (MODS) </name>
2070- <URI>http://www.loc.gov/standards/mods/</URI>
2071- <context>Das Metadata Object and Description Schema wird für alle desriptive Metadaten
2072- benutzt. Andere descriptive Metadaten Schemata können zusätzlich ebenfalls in die METS
2073- Datei inkludiert werden; haben jedoch keinerlei Bedeutung für zvdd oder den DFG-Viewer.</context>
2074- <note />
2075- </extension_schema>
2076-
2077- <description_rules />
2078-
2079- <!--
2080- ***************************************************************************
2081- ** Controlled vocabularies
2082- *************************************************************************** -->
2083-
2084- <controlled_vocabularies>
2085- <vocabulary>
2086- <name>ISO 639-2</name>
2087- <maintenance_agency>International Standard Organization</maintenance_agency>
2088- <URI>http://www.iso.ch/</URI>
2089- <context>
2090- <p>Sämtliche Sprachangaben innerhalb des MODS-Extension Schemas erfolgen gemäß ISO
2091- 639-2 Sprachcodes. Dies betrifft das Element
2092- &lt;mods:languageTerm&gt;.</p>
2093- </context>
2094- <description>
2095- <p>ISO Sprachcodes</p>
2096- </description>
2097- </vocabulary>
2098-
2099- <vocabulary>
2100- <name>zvdd Strukturdatentypologie</name>
2101- <maintenance_agency>zvdd - Zentrales Verzeichnis Digitalisierter Drucke</maintenance_agency>
2102- <URI>http://zvdd.gdz-cms.de/dokumentation/datenformate_im_ueberblick/strukturdaten/</URI>
2103- <context>
2104- <p>Für zvdd verfügen sämtliche &lt;div&gt; über ein TYPE Attribut, dessen
2105- Wert der Strukturdatentypologie entsprechen muss.</p>
2106- </context>
2107- <description>
2108- <p>Die zvdd Strukturdatentypologie enthält alle Strukturtypen, die innerhalb zvdd
2109- vorkommen dürfen. Diese Typen werden von zvdd sowohl für die Anzeige als auch
2110- für die Suche genutzt.</p>
2111- </description>
2112- </vocabulary>
2113-
2114- <vocabulary>
2115- <name>zvdd MODS Anwendungsprofil</name>
2116- <maintenance_agency>zvdd - Zentrales Verzeichnis Digitalisierter Drucke</maintenance_agency>
2117- <URI>http://dfg-viewer.de/fileadmin/groups/dfgviewer/MODS_Anwendungsprofil_1.0.pdf</URI>
2118- <context>
2119- <p>Das zvdd MODS Anwendungsprofil muss mit dem zvdd/DFG-Viewer METS Profil verwendet
2120- werden.</p>
2121- </context>
2122- <description>
2123- <p>Das zvdd MODS Anwendungsprofil beschreibt das Datenformat für Datenlieferungen an
2124- das zvdd-Portal.</p>
2125- </description>
2126- </vocabulary>
2127- </controlled_vocabularies>
2128-
2129- <!--
2130- ***************************************************************************
2131- ** Structural Requirements
2132- *************************************************************************** -->
2133-
2134- <structural_requirements>
2135-
2136- <!--
2137- ***************************************************************************
2138- ** Requirement for descriptive Metadata
2139- *************************************************************************** -->
2140-
2141- <dmdSec>
2142- <requirement>
2143- <head>Anzahl und Art der deskriptiven Metadaten</head>
2144-
2145- <p>Jedes Strukturelement (das heißt jedes &lt;div&gt;) kann eine oder
2146- mehrere deskriptive Metadatensektionen &lt;dmdSec&gt; besitzen. Der Typ
2147- einer Metadatensektion muss im MDTYPE Attribut eines jeden &lt;mdRef&gt;
2148- oder &lt;mdWrap&gt; Elements angegeben sein. Sowohl der DFG-Viewer als
2149- auch das zvdd-Portal unterstützten lediglich deskriptive Metadatensektionen vom
2150- Typ MODS. Diese müssen in das METS Dokument eingebunden sein und sich innerhalb
2151- von &lt;mdWrap&gt; befinden. Ferner wird lediglich die erste
2152- Metadatensektion des Typs berücksichtigt. Sollten also mehrere MODS Sektionen
2153- existieren, wird lediglich die Sektion berücksichtigt, dessen Identifier an
2154- erster Stelle im entsprechenden DMDID Attribut des &lt;div&gt; Elements
2155- steht. </p>
2156-
2157- <p>Das oberste &lt;div&gt; Element aus der logischen
2158- &lt;structMap&gt; muss einen entsprechenden MODS Metadatensatz besitzen,
2159- da dieser unter anderem Informationen zur eindeutigen Identifizierung und
2160- Indexierung der Resource sowie zur Anzeige in entsprechenden Page-Turnern
2161- &#8211; wie dem DFG-Viewer &#8211; enthält. Handelt es sich beim
2162- obersten Element um ein &lt;div&gt; eines übergeordnetes Werkes
2163- (beispielsweise eine Zeitschrift), das keinen MODS Metadatensatz referenziert,
2164- muss das Kind-Element einen solchen besitzen.</p>
2165-
2166- <p>Weitere Metadatensektionen können vorhanden sein, um bspw. weitere
2167- Metadatenformate wie DublinCore aufzunehmen oder aber mittels
2168- &lt;mdRef&gt; auf den entsprechenden Metadatensatz im lokalen OPAC zu
2169- verweisen. Sowohl der DFG-Viewer als auch das zvdd-Portal ignorieren
2170- entsprechende Sektionen. </p>
2171- </requirement>
2172-
2173- <requirement>
2174- <head>MODS Metadaten für logische Objekte</head>
2175-
2176- <p>MODS Metadaten können aufgrund ihres Detailierungsgrades für die Indexierung
2177- eines Dokuments &#8211; konkret eines jeden &lt;div&gt; Elements
2178- &#8211; genutzt werden. Dies entspricht im wesentlichen der Verwendung durch
2179- das zvdd-Portal.</p>
2180-
2181- <p>Die MODS Metadaten des obersten &lt;div&gt; Elements (bzw. die des ersten
2182- Kind-Elements) werden durch den DFG-Viewer zur Anzeige der bibliographischen
2183- Daten genutzt. Informationen über die MODS Felder, deren Nutzung und deren
2184- Vorhandensein (Pflichtfelder, optionale Felder) finden sich im separaten MODS
2185- Profil. </p>
2186- </requirement>
2187-
2188- <requirement RELATEDMAT="example01">
2189- <head>Eindeutige Identifizierung des Dokuments mit &lt;mods:identifier&gt;</head>
2190-
2191- <p>Jedes Dokument bzw. jede Dokumentstruktur wird mittels des Wertes, welches im
2192- &lt;mods:identifier&gt; Element gespeichert wird, eindeutig
2193- identifiziert. Es können beliebige, unterschiedliche Identifier für ein
2194- &lt;div&gt; Element vorhanden sein. So können neben lokalen
2195- bibliotheksinternen Identifiern auch allgemein gebräuchliche Identifier wie
2196- bspw. die ISBN in diesem Feld gespeichert werden. Für das oberste
2197- &lt;div&gt;-Element (bzw. für dessen erstes Kind-Element) in der
2198- logischen &lt;structMap&gt; ist das Vorhandensein eines entsprechenden
2199- Identifiers Pflicht.</p>
2200-
2201- <p>zvdd fordert an dieser Stelle einen weltweit eindeutigen Identifier wie z.B. URN,
2202- PURL, DOI, Handle oder ARK. Für den Kontext der digitalen Bibliothek hat die URN
2203- in den vergangenen Jahren an Bedeutung gewonnen. Daher wird die URN als
2204- persistenter Identifier vom zvdd-Portal empfohlen.</p>
2205-
2206- <p>Der DFG-Viewer benötigt für die Anzeige eines Werkes keine solche URN. Es wird
2207- trotzdem empfohlen eine solche URN in den MODS Metadaten zu speichern, da anhand
2208- eines solches Identifier weitere Services denkbar sind, die mittels der URN
2209- angesprochen werden können. Sie könnte bspw. zur Verknüpfung zwischen DFG-Viewer
2210- und dem zvdd-Portal dienen. </p>
2211-
2212- <p>Aufgrund der Eindeutigkeit kann die URN auch als Identifier für OAI-PMH genutzt
2213- werden (Protokoll für Metadata-Harvesting). Das heißt der am zvdd-Portal
2214- aufgesetzte OAI-Harvester bedient sich der URN, um die entsprechenden
2215- OAI-Records eindeutig zu identifizieren. Dabei wird jedes &lt;div&gt;
2216- Element, welche eine URN besitzt als eigenständiger OAI-Record betrachtet. </p>
2217- </requirement>
2218-
2219- <requirement RELATEDMAT="example02">
2220- <head>Hierarchische Verknüpfung von Dokumenten mittels MODS</head>
2221-
2222- <p>Neben der gängigen METS-internen Möglichkeit, Teile von Dokumenten hierarchisch
2223- miteinander zu verknüpfen (siehe Erläuterungen zur optionalen logischen
2224- Dokumentstruktur), existieren auch hierarchische Verknüpfungen zwischen
2225- Dokumenten. Ein Beispiel für eine solche Verknüpfung ist die Beziehung zwischen
2226- einem Mehrbändigen Werk und seinen einzelnen ihm untergeordneten Bänden.
2227- Üblicherweise werden sämtliche Bände eigenständig digitalisiert, so dass für
2228- jeden der Bände eine eigene METS-Datei generiert wird. Um die Bände zu
2229- gruppieren und deren Zusammengehörigkeit abzubilden, wird für das Mehrbändige
2230- Werk eine separate METS-Datei erzeugt. Diese enthält keine Verweise auf
2231- Image-Dateien, sondern nur auf die untergeordneten Bände. Diese hierarchische
2232- Verknüpfung gilt analog für alle anderen &lt;div&gt; Elemente, die auf
2233- ein übergeordnetes Element verweisen &#8211; also bspw. auch für eine
2234- Verknüpfung zwischen Zeitschriftenband und Zeitschrift.</p>
2235-
2236- <p>In zvdd wird eine solche Verknüpfung in MODS abgelegt. Das
2237- &lt;relatedItem&gt; Element vom Typ "host" speichert einen Verweis auf
2238- das übergeordnete Werk. Dazu enthält es ein Unterelement vom Typ
2239- &lt;mods:recordInfo&gt;&lt;mods:recordIdentifier&gt;, das einen
2240- zur Laufzeit innerhalb des liefernden Repositories gültigen Identifier enthält.
2241- Persistenz wird nicht gefordert. Hierbei ist zu beachten, dass eine solche
2242- Verknüpfung an dieser Stelle grundsätzlich immer nur auf die übergeordnete
2243- Einheit erfolgt.</p>
2244-
2245- <p>Der DFG-Viewer nutzt für die Navigation durch hierarchische Strukturen jedoch
2246- METS-Pointer &lt;mptr&gt;, die jeweils direkt auf über- und auch auf
2247- untergeordnete METS-Dateien verweisen, so kann in beide Richtungen navigiert
2248- werden. Beispielsweise kann von einem Zeitschriften-Element auf alle Bände
2249- verwiesen werden und von den einzelnen Bänden zum übergeordneten
2250- Zeitschriften-Element, siehe auch Kapitel "Behandlung von Zeitschriften und
2251- Mehrbändigen Werken im DFG-Viewer".</p>
2252- </requirement>
2253-
2254- <requirement RELATEDMAT="example03">
2255- <head>Reihenfolge der Strukturelemente in der logischen Struktur</head>
2256-
2257- <p>Innerhalb eines METS Dokuments wird die Reihenfolge der &lt;div&gt;
2258- Elemente durch deren Anordnung in der logischen &lt;structMap&gt;
2259- bestimmt. Im Fall einer Verknüpfung mittels &lt;relatedItem&gt; muss die
2260- entsprechende Information jedoch an anderer Stelle im MODS Datensatz
2261- abgespeichert werden, da für diese Ebene keine verschachtelten
2262- &lt;div&gt; Elemente existieren. Vielmehr sind die einzelnen
2263- &lt;div&gt; Elemente in unterschiedlichen METS-Dokumenten abgelegt. </p>
2264-
2265- <p>Unter MODS dient das &lt;mods:part&gt; Element dazu, konkrete
2266- Informationen über einen einzelnen Teil und dessen Zugehörigkeit zu einer
2267- größeren Gesamtheit zu speichern. In einer METS-Datei für einen Band sollte an
2268- dieser Stelle die Bandnummer sowohl für die Anzeige als auch für die Sortierung
2269- des Inhaltsverzeichnisses gespeichert werden. Diese Informationen werden sowohl
2270- durch den DFG-Viewer (Anzeige von Bandnummer als bibliographische Information)
2271- als auch durch das zvdd-Portal (Sortierung des Inhaltsverzeichnis des
2272- Mehrbändigen Werks) genutzt. </p>
2273-
2274- <p>Das &lt;mods:part&gt; Element muss über ein ORDER Attribut verfügen, das
2275- die Reihenfolge des jeweiligen &lt;div&gt;s innerhalb der übergeordneten
2276- Einheit angibt. Der Wert dieses Elements muss ganzzahlig sein. Informationen zur
2277- Anzeige der Bandnummer werden innerhalb des &lt;part&gt; Elements unter
2278- &lt;detail&gt;&lt;number&gt; gespeichert. Das
2279- &lt;number&gt; Element enthält sämtliche Informationen als Text, das
2280- heißt &lt;number&gt; darf bspw. Zahlenwörter oder sonstige beliebige
2281- Angaben zur Nummerierung enthalten.</p>
2282-
2283- <p>Das &lt;mods:detail&gt; Element muss über ein TYPE Attribut verfügen, das
2284- für zvdd einem Typ der zvdd Strukturdatentypologie entsprechen muss. Für den
2285- DFG-Viewer sollte es einem der in der MODS Dokumentation der Library of Congress
2286- vorgeschlagenen Typen entsprechen: volume, part, issue, chapter, section,
2287- paragraph oder track.</p>
2288-
2289- <p>Innerhalb des &lt;part&gt; Elements müssen immer beide Felder (ORDER
2290- Attribut und &lt;number&gt; Element) vorhanden sein. Sollte die
2291- Information zur Anzeige identisch mit denen zur Sortierung sein, müssen
2292- entsprechende Informationen dupliziert und in beiden Feldern angegeben
2293- werden.</p>
2294- </requirement>
2295- </dmdSec>
2296-
2297- <!--
2298- ***************************************************************************
2299- ** Requirements for Administrative Metadata
2300- *************************************************************************** -->
2301-
2302- <amdSec>
2303- <requirement RELATEDMAT="example04">
2304- <head>Metadaten zu Rechteinhaber und Urheber</head>
2305-
2306- <p>Um im zvdd-Portal sowie bei der Anzeige durch den DFG-Viewer den Rechteinhaber
2307- bzw. den Urheber eines Digitalisats zu erwähnen, muss diese Information
2308- innerhalb eines &lt;rightsMD&gt; Element gespeichert werden. Innerhalb
2309- dieses Elements kommt ein eigenes Schema zur Anwendung, welches weiter unten
2310- erläutert wird. </p>
2311-
2312- <p>Da entsprechende Urheber-/Rechteinfromationen in aller Regel für eine komplette
2313- Resource gelten, kann die entsprechende &lt;amdSec&gt; nur von dem
2314- obersten logischen &lt;div&gt; Element (oder von dessen ersten
2315- Kind-Element) einer METS-Datei verknüpft werden. Das &lt;admSec&gt;
2316- Element muss daher also über ein Attribut ID verfügen. Das
2317- &lt;rightMD&gt; muss gemäß METS-Spezifikation zwar vorhanden sein, wird
2318- jedoch nicht aus dem ADMID Attribut des &lt;div&gt; Elements heraus
2319- verlinkt. </p>
2320-
2321- <p>Die entsprechenden Rechte-Metadaten müssen innerhalb des &lt;mdWrap&gt;
2322- Elements gepeichert sein. Eine Referenzierung der Metadaten ist nicht zulässig.
2323- Das MDTYPE Attribut des &lt;mdWrap&gt; Elements muss den Wert "OTHER"
2324- besitzen. Dieser Typ wird im OTHERMDTYPE Attribut konkret spezifiziert. Dieses
2325- muss den Wert "DVRIGHTS" besitzen. </p>
2326-
2327- <p>Innerhalb des &lt;mdWrap&gt; Elements kommt ein eigenes Rechte-Schema zur
2328- Anwendung, welches seinen Inhalt in ein umschließendes &lt;dv:rights&gt;
2329- Element schreibt. Innerhalb dieses Elements gibt es folgende drei Unterelemente,
2330- die jeweils nur genau einmal vorkommen dürfen und müssen. </p>
2331-
2332- <p>owner &#8212; Der Urheber des Digitalisats</p>
2333-
2334- <p>logo &#8212; Eine URL des Logos des Urhebers; dieses Logo wird durch den
2335- DFG-Viewer sowie das zvdd-Portal entsprechend angezeigt.</p>
2336-
2337- <p>homepage &#8212; Eine URL der Homepage des Urhebers.</p>
2338-
2339- <p>Weitere Rechteinformationen können in separaten &lt;rightsMD&gt;
2340- Elementen innerhalb derselben Administrativen Metadatensektion abgelegt werden.
2341- Diese müssen jedoch andere Rights-Schemata verwenden und diese in den Attributen
2342- MDTYPE und OTHERMDTYPE des &lt;mdWrap&gt; Elements dokumentieren. </p>
2343- </requirement>
2344-
2345- <requirement RELATEDMAT="example05">
2346- <head>Metadaten zu Herkunft und Online-Präsentation</head>
2347-
2348- <p>Informationen zu Herkunft und Präsentation eines Digitalisats werden innerhalb
2349- eines &lt;digiprovMD&gt; Elements in der &lt;amdSec&gt;
2350- gespeichert.</p>
2351-
2352- <p>Analog zu den Metadaten zu Rechteinhaber und Urheber müssen die entsprechenden
2353- Herkunfts-Metadaten innerhalb des &lt;mdWrap&gt; Elements gepeichert
2354- sein. Eine Referenzierung der Metadaten ist ebenfalls nicht zulässig. Das MDTYPE
2355- Attribut des &lt;mdWrap&gt; Elements muss den Wert "OTHER" besitzen.
2356- Dieser Typ wird im OTHERMDTYPE Attribut konkret spezifiziert. Dieses muss hier
2357- den Wert "DVLINKS" besitzen. </p>
2358-
2359- <p>Innerhalb des &lt;mdWrap&gt; Elements kommt ein eigenes Herkunfts-Schema
2360- zur Anwendung, welches seinen Inhalt in ein umschließendes
2361- &lt;dv:links&gt; Element schreibt. Innerhalb dieses Elements gibt es
2362- folgende zwei Unterelemente, die jeweils nur genau einmal vorkommen dürfen und
2363- müssen. </p>
2364-
2365- <p>reference &#8212; Eine URL auf den Katalogeintrag des Digitaslisats</p>
2366-
2367- <p>presentation &#8212; Eine URL auf die Online-Präsentation des Digitalisats.</p>
2368-
2369- <p>Weitere Herkunftsinformationen können in separaten &lt;digiprovMD&gt;
2370- Elementen innerhalb derselben Administrativen Metadatensektion abgelegt werden.
2371- Diese müssen jedoch andere Links-Schemata verwenden und diese in den Attributen
2372- MDTYPE und OTHERMDTYPE des &lt;mdWrap&gt; Elements dokumentieren. </p>
2373- </requirement>
2374- </amdSec>
2375-
2376- <!--
2377- ***************************************************************************
2378- ** Requirements for the fileSec
2379- *************************************************************************** -->
2380-
2381- <fileSec>
2382- <requirement>
2383- <head>File-Section</head>
2384-
2385- <p>In der File-Section &lt;fileSec&gt; sind alle Inhaltsdateien aufgeführt,
2386- aus dem das Dokument besteht. Inhaltsdateien sind Dateien, die den semantischen
2387- Inhalt der Resource enthalten. Dateien, die bspw. Metadaten zu diesem Dokument
2388- enthalten, werden nicht aus der File-Sektion heraus verlinkt. </p>
2389- </requirement>
2390-
2391- <requirement>
2392- <head>File-Groups</head>
2393-
2394- <p>Die Dateien selber können in unterschiedliche Gruppen gegliedert sein. Jede
2395- Gruppe beinhaltet Dateien ähnlichen Typs zu ähnlichen Verwendungszwecken. In
2396- einem METS-Dokument muss mindestens eine Gruppe existieren. Die Anzahl der
2397- Gruppen ist nicht beschränkt. Für die Nutzung der METS-Datei im DFG-Viewer sind
2398- jedoch mindestens zwei der unten stehenden Dateigruppen zu implementieren. </p>
2399-
2400- <p>Jede File-Group wird durch ein &lt;fileGrp&gt; Element deklariert und ist
2401- direkt dem &lt;fileSec&gt; Element untergeordnet. Untergruppen sind
2402- nicht möglich, das heißt ein &lt;fileGrp&gt; Element darf keine weiteren
2403- &lt;fileGrp&gt; Elemente enthalten. </p>
2404-
2405- <p>Existieren mehrere File-Groups, so ist jedes &lt;fileGrp&gt; Element mit
2406- einem Attribut USE zu versehen, das Informationen über die Verwendung enthält.
2407- </p>
2408- </requirement>
2409-
2410- <requirement RELATEDMAT="example06">
2411- <head>Files</head>
2412-
2413- <p>Jede Datei wird durch ein &lt;file&gt; Element deklariert. Dieses
2414- &lt;file&gt; Element ist Kind-Element eines &lt;fileGrp&gt;
2415- Elements, das heißt jede Datei muss zu genau einer Gruppe gehören. Die
2416- Zugehörigkeit einer Datei zu mehreren Gruppen ist nicht möglich. </p>
2417-
2418- <p>Der eigentliche Inhalt der Datei (der Bytestream) wird außerhalb des
2419- METS-Dokuments gespeichert, jedoch so persistent mit der METS-Datei mittels
2420- &lt;FLocat&gt; verknüpft, dass der DFG-Viewer die Datei bei Bedarf aus
2421- dem ursprünglichen Repository laden und anzeigen kann. Dazu muss das
2422- &lt;file&gt; Element als einziges Kind-Element ein
2423- &lt;FLocat&gt; Element enthalten, welches mittels einer URL, die in dem
2424- Attribut xlink:href gespeichert ist, referenziert wird. Das Attribut LOCTYPE
2425- muss daher den Wert "URL" besitzen. Für die Gültigkeit der in der METS-Datei
2426- enthaltenen URL ist das Repository verantwortlich, welche die METS-Datei
2427- produziert und in Umlauf gebracht hat. In die METS-Datei eingebetteter Content
2428- unter Verwendung des &lt;FContent&gt; Elements wird nicht unterstützt. </p>
2429-
2430- <p>Jedes &lt;file&gt; Element enthält ein Attribut ID, welches als
2431- eindeutiger Verweis innerhalb des METS-Dokuments dient. Diese IDs werden von den
2432- &lt;fptr&gt; Elementen in &lt;structMap&gt; referenziert und
2433- weisen den &lt;div&gt; Elementen das entsprechende &lt;file&gt;
2434- Element zu. </p>
2435-
2436- <p>Jedes &lt;file&gt; muss ein MIMETYPE Attribut beinhalten, welches den
2437- Mime-Type der Inhaltsdatei enthält. Als weitere technische Metadaten sollten
2438- CHECKSUM, CHECKSUMTYPE und SIZE vorhanden sein. Sie beinhalten einen Hashwert
2439- des Content-Files bzw. entsprechende Informationen zu dem verwendeten
2440- Algorithmus sowie die Länge der Datei in Bytes. Diese Informationen sind vor
2441- allem für den DFG-Viewer hilfreich, um die Authentizität der gelieferten
2442- Contentdateien vor der Anzeige zu beurteilen. </p>
2443-
2444- <p>Derzeit werden keine technischen Metadaten für einzelne Dateien unterstützt.
2445- Sollten dies gewünscht sein, können sie in einer separaten administrativen
2446- Metadatensektion (admSec) abgespeichert werden und mittels des ADMID Attributs
2447- des &lt;file&gt; Elements verknüpft werden. Die Verwendung von
2448- technischen Metadaten ist also optional. </p>
2449- </requirement>
2450-
2451- <requirement RELATEDMAT="example07">
2452- <head>Dateigruppen</head>
2453-
2454- <p>Die Verwendung unterschiedlicher Dateigruppen hat den Zweck, Dateien mit
2455- ähnlichen Merkmalen unter dem Aspekt identischer Nutzung zusammenzufassen. Auf
2456- den DFG-Viewer übertragen bedeutet dies, dass Imagedaten mit identischer
2457- Imagebreite zu einer Gruppe zusammengefasst werden. Hierbei ist zu beachten,
2458- dass alle Dateien dieser Gruppen Derivate der Originaldateien sind, die zur
2459- Anzeige in verschiedenen Größen berechnet wurden. Daher muss eine Dateigruppe
2460- auch immer ein komplettes Set an Imagedaten enthalten &#8211; für jede Seite
2461- muss in jeder Dateigruppe genau ein Image existieren. </p>
2462-
2463- <p>Der DFG-Viewer kann diese unterschiedlichen Derivate entsprechend ihrer
2464- Imagebreite ordnen. Entsprechend der vorhandenen Imagebreiten stellt der
2465- DFG-Viewer die Images in unterschiedlichen Zoomstufen dar. Zu diesem Zweck gibt
2466- das Attribut USE des &lt;fileGrp&gt; Elements die Pixelbreite der
2467- enthaltenen Images an. Die möglichen Werte des USE Attributs sind für den
2468- DFG-Viewer standarisiert. Dateigruppen mit abweichenden Werten werden vom
2469- DFG-Viewer ignoriert und können so bspw. Verweise auf Volltextdaten oder lokale
2470- Dateien enthalten. Die möglichen Werte für den DFG-Viewer sind: </p>
2471-
2472- <p>DEFAULT &#8212; enthält Imagedateien mit einer Breite zwischen 1000 und 1500
2473- Pixel. Dies ist die Bildgröße, die beim ersten Aufruf des Dokuments im
2474- DFG-Viewer angezeigt wird. </p>
2475-
2476- <p>MIN &#8212; enthält Imagedateien mit einer Breite zwischen 600 und 1000
2477- Pixel. Diese Bildgröße wird angezeigt, wenn im DFG-Viewer aus dem Dokument
2478- herausgezoomt wird. </p>
2479-
2480- <p>MAX &#8212; enthält Imagedateien der größtmöglichen online verfügbaren
2481- Auflösung. Diese Bildgröße wird angezeigt, wenn im DFG-Viewer in das Dokument
2482- hineingezoomt wird. </p>
2483-
2484- <p>THUMBS &#8212; enthält alle Seiten als kleines Übersichtsbild mit genau 150
2485- Pixel Breite oder 150 Pixel Höhe. Bei Hochkant-Bildern ist also die Höhe auf 150
2486- Pixel beschränkt, bei Querformat-Bildern dagegen die Breite. Die jeweils andere
2487- Größe sollte so gewählt werden, dass die Proportionen erhalten bleiben. Das
2488- Bildformat für die Thumbnails muss entweder PNG oder JPG sein. Daraus wird der
2489- DFG-Viewer zukünftig eine Übersicht aller Seiten erstellen. Daher ist es
2490- wichtig, dass diese &lt;fileGrp&gt; ein entsprechendes verkleinertes
2491- Derivat eines jeden Seitenimages enthält. </p>
2492-
2493- <p>DOWNLOAD &#8212; enthält Dateien, die für den Download vorgesehen sind. Zu
2494- beachten ist hier die korrekte Angabe des entsprechenden MIMETYPE Attributs der
2495- &lt;file&gt; Elemente, bei einer PDF-Datei muss beispielsweise der Wert
2496- "application/pdf" angegeben sein. Die einzelnen Dateien können sowohl physischen
2497- wie auch logischen Strukturelementen zugeordnet werden.</p>
2498-
2499- <p>Es müssen mindestens die entsprechenden File-Groups für die Auflösungen "MIN" und
2500- "DEFAULT" in der METS-Datei enthalten sein, alle weiteren File-Groups sind
2501- optional. </p>
2502- <p />
2503- </requirement>
2504- </fileSec>
2505-
2506- <!--
2507- ***************************************************************************
2508- ** Requirements for the structMap
2509- *************************************************************************** -->
2510-
2511- <structMap>
2512- <requirement RELATEDMAT="example08">
2513- <head>Bibliographisches Dokumentenmodell</head>
2514-
2515- <p>Wird ein Dokument gemäß des Bibliographischen Dokumentenmodells erfasst,
2516- existiert lediglich eine logische &lt;structMap&gt;. Daher muss das TYPE
2517- Attribut des einzigen &lt;structMap&gt; Elements den Wert "LOGICAL"
2518- besitzen. Die logische &lt;structMap&gt; enthält bei Monographien
2519- lediglich ein einziges &lt;div&gt; Element, welches das jeweilige Werk
2520- repräsentiert. In diesem Modell existieren keinerlei &lt;div&gt;
2521- Elemente als Kind-Elemente.</p>
2522-
2523- <p>Demzufolge ist dem &lt;div&gt; mindestens ein MODS Metadatensatz
2524- zugeordnet. Entsprechend hat das DMDID Attribut des &lt;div&gt; Elements
2525- einen Eintrag. Das TYPE Attribut muss einen Wert aus der
2526- zvdd-Strukturdatentypologie enthalten. </p>
2527-
2528- <p>Da keine entsprechenden Seiten definiert sind, ist dieses Modell für den
2529- DFG-Viewer NICHT geeignet. Es existiert lediglich als notdürftige Lösung für das
2530- zvdd-Portal, um Dokumente, die lediglich als PDF vorliegen und zu denen
2531- rudimentäre Metadaten existieren, in das Portal aufnehmen und dort indexieren zu
2532- können.</p>
2533- </requirement>
2534-
2535- <requirement RELATEDMAT="example9">
2536- <head>Seitenbasiertes Dokumentenmodell</head>
2537-
2538- <p>Das Seitenbasierte Dokumentmodell ist das Minimalmodell, welches vom DFG-Viewer
2539- unterstüzt wird. Es definiert einzelne Seiten, die durch den DFG-Viewer
2540- angezeigt werden können. Zu jeder dieser Seiten müssen mindestens zwei
2541- entsprechende Dateiverweise existieren (einer in die File-Group "DEFAULT" und
2542- einer in die File-Group "MIN"). </p>
2543-
2544- <p>Das Seitenbasierte Dokumentenmodell zeichnet sich durch zwei
2545- &lt;structMap&gt; Elemente aus. Ein &lt;structMap&gt; Element
2546- enthält die logische Struktur, dessen TYPE Attribut besitzt den Werk "LOGICAL".
2547- Das andere &lt;structMap&gt; Element enthält die physische Struktur, das
2548- TYPE Attribut hat den Wert "PHYSICAL". Weitere &lt;structMap&gt;
2549- Elemente dürfen nicht existieren. Die &lt;structLink&gt; Sektion muss in
2550- diesem Modell vorhanden sein und entsprechende logische und physische Strukturen
2551- verknüpfen. Dabei muss jedes &lt;div&gt; Element aus der physischen
2552- Struktur mindestens einem &lt;div&gt; Element aus der logischen Struktur
2553- direkt oder indirekt zugeordnet sein. Als Ausnahme gilt lediglich das erste
2554- logische &lt;div&gt; Element eines Mehrbändigen Werkes oder einer
2555- Zeitschrift, da dieses das übergeordnete Werk bezeichnet und kein physisches
2556- Strukturelement dafür existiert. Weitere Informationen zur Verknüpfung der
2557- logischen und physischen Struktur sind dem &lt;structLink&gt; Abschnitt
2558- zu entnehmen. </p>
2559-
2560- <p>Innerhalb des physischen &lt;structMap&gt; Elements wird die
2561- Seitenstruktur durch &lt;div&gt; Elemente wiedergegeben, die einem
2562- obersten &lt;div&gt; Element untergeordnet sind. Dieses oberste
2563- &lt;div&gt; Element umfasst die Seiten, die die bibliographische Einheit
2564- repräsentieren. Daher muss dessen TYPE Attribut immer den Wert "physSequence"
2565- besitzen. </p>
2566-
2567- <p>Die darunterliegenden Strukturelemente repräsentieren die Seiten bzw. den
2568- Einband. Einband und Seiten werden auf derselben hierarchischen Ebene
2569- angesiedelt. Im Fall einer Seiten-Repräsentation enthält das jeweilige
2570- &lt;div&gt; Element den Wert "page" im TYPE Attribut. Eine weitere
2571- Verschachtelung bspw. zum Abbilden von Seitenbereichen wie Spalten etc. ist
2572- ebenfalls denkbar und können als den Seiten untergeordnete &lt;div&gt;
2573- Elemente implementiert werden. Der DFG-Viewer berücksichtigt entsprechende
2574- &lt;div&gt; Elemente unterhalb der Seitenebene jedoch nicht. </p>
2575-
2576- <p>Jedes &lt;div&gt; Element innerhalb der physischen Struktur muss über ein
2577- ID Attribut verfügen, welches einen eindeutigen Wert besitzt. Die Eindeutigkeit
2578- dieses Wertes gilt für das komplette METS-Dokument. </p>
2579-
2580- <p>Obwohl es auf Seitenebene sinnvoll erscheint, die &lt;div&gt; Elemente in
2581- derselben Reihenfolge anzuordnen, wie die Seiten innerhalb der gebundenen
2582- Einheit angeordnet sind, muss diese Reihenfolge im ORDER Attribut eines jeden
2583- &lt;div&gt; Elements auf Seitenebene explizit angegeben werden. Das
2584- ORDER Attribut darf lediglich einen ganzzahligen Wert (Integer) enthalten, der
2585- auf Ebene der Seiten eindeutig sein muss. Für die Reihenfolge der Seiten sind
2586- einzig die Werte der ORDER Attribute ausschlaggebend; die Reihenfolge der
2587- &lt;div&gt; Elemente bleibt unberücksichtigt. Für den Seiten
2588- untergeordnete Strukturelemente wird die Verwendung des ORDER Attributs
2589- ebenfalls empfohlen. </p>
2590-
2591- <p>Besitzt eine Seite eine aufgedruckte Seitenzahl, so ist diese in Vorlagenform im
2592- ORDERLABEL Attribut des &lt;div&gt; Elements zu speichern. Seiten, die
2593- nicht in der Paginierung berücksichtigt sind (ungezählte Seiten) benötigen kein
2594- ORDERLABEL Attribut. Das Ausfüllen des LABEL Attributs ist optional möglich. Der
2595- DFG-Viewer benutzt den Wert des ORDERLABEL Attributs zur Anzeige und Navigation
2596- (gezieltes Anspringen von Seiten), wenn das Attribt vorhanden ist. </p>
2597-
2598- <p>Das Attribut CONTENTIDS gibt einen (oder mehrere) persistente Identifier für jede
2599- einzelnen Seite des Dokuments an und besteht aus einer URI oder einer Liste von
2600- URIs. Diese werden vom DFG-Viewer als persistente IDs für die jeweilige Seite
2601- angezeigt und können als dauerhafter Link für Zitationen direkt auf die
2602- entsprechende Seite genutzt werden.</p>
2603-
2604- <p>Mit Hilfe des File-Pointers &lt;fptr&gt; können Dateien für den Download
2605- referenziert werden. In der physischen Struct-Map ist dies nur für einzelne
2606- Seiten möglich, siehe auch Kapitel "Verweise auf Dateien &#8211; physische
2607- Struktur". Eine Datei des kompletten Werkes kann in der logischen Struct-Map
2608- referenziert werden, siehe Kapitel "Verweise auf Dateien &#8211; logische
2609- Struktur".</p>
2610- </requirement>
2611-
2612- <requirement RELATEDMAT="example10">
2613- <head>Komplexes Dokumentenmodell</head>
2614-
2615- <p>Das Komplexe Dokumentenmodell erweitert das Seitenbasierte Modell um weitere
2616- Strukturinformationen auf logischer Ebene. Für die physische Struktur
2617- (&lt;structMap TYPE="PHYSICAL"&gt;) gilt im Komplexen Dokumentenmodell
2618- all jenes, was bereits oben für das Seitenbasierte Modell beschrieben wurde. </p>
2619-
2620- <p>Der DFG-Viewer nutzt die zusätzlichen Strukturinformationen, um das
2621- Inhaltsverzeichnis zu erstellen und ermöglicht eine Navigation in der Struktur.
2622- Das zvdd-Portal verarbeitet die logischen Strukturdaten und nutzt sie zur
2623- Indizierung und zur Suche.</p>
2624-
2625- <p>Die oberste logische Struktureinheit ist das bereits im Bibliographischen
2626- Dokumentenmodell erwähnte &lt;div&gt; Element, welches die
2627- bibliographische Einheit repräsentiert. Diesem &lt;div&gt; werden
2628- weitere &lt;div&gt; Elemente untergeordnet, so dass sich durch die
2629- verschachtelten Elemente die logische Struktur des Dokuments abbildet. Die Tiefe
2630- der Verschachtelung ist nicht beschränkt. In der logischen Struktur gibt die
2631- Reihenfolge der &lt;div&gt; Elemente die tatsächliche Reihenfolge der zu
2632- repräsentierenden Strukturen wieder. Es ist nicht notwendig, das ORDER oder
2633- ORDERLABEL Attribut zu benutzen; deren Werte werden im Kontext des DFG-Viewers
2634- sowie des zvdd-Portals ignoriert. </p>
2635-
2636- <p>Jedes &lt;div&gt; Element innerhalb der logischen Struktur muss ebenfalls
2637- über ein ID Attribut verfügen, welches einen eindeutigen Wert besitzt. Die
2638- Eindeutigkeit dieses Wertes gilt für das komplette METS-Dokument. </p>
2639-
2640- <p>Weiterhin muss jedes &lt;div&gt; Element innerhalb der logischen Struktur
2641- über ein TYPE Attribut verfügen. Für zvdd muss dessen Inhalt einem Typ der zvdd
2642- Strukturdatentypologie entsprechen. Werden die Strukturtypen des DFG-Viewer
2643- Strukturdatensets verwendet, werden diese Strukturen &#8211; je nach
2644- Sprachauswahl des Nutzers &#8211; auch übersetzt angezeigt. Ist ein Attribut
2645- LABEL vorhanden, wird dieses zur Anzeige des jeweiligen Strukturtyps in der
2646- Übersicht genutzt.</p>
2647-
2648- <p>Mit dem Attribut CONTENTIDS können auch in diesem Modell persistente Identifier
2649- für alle logischen Elemente angegeben werden, beispielsweise für die gesamte
2650- Monographie oder für einzelne Kapitel. Diese werden ebenfalls vom DFG-Viewer als
2651- persistente IDs für Zitationen angezeigt.</p>
2652-
2653- <p>Zusätzlich zu den Download-Referenzen in der physischen Struct-Map können auch in
2654- der logischen Struct-Map Dateien per &lt;fptr&gt; referenziert werden,
2655- beispielsweise PDF-Dateien des kompletten Werkes, von Artikeln oder Kapiteln.
2656- Der DFG-Viewer wertet zur Zeit nur die Referenz auf das Gesamtwerk aus, siehe
2657- auch Kapitel "Verweise auf Dateien &#8211; logische Struktur".</p>
2658- </requirement>
2659-
2660- <requirement RELATEDMAT="example11">
2661- <head>Behandlung von Zeitschriften und Mehrbändigen Werken im DFG-Viewer</head>
2662-
2663- <p>Bandübergreifende Navigation im DFG-Viewer wird ermöglicht, indem die Bände und
2664- ihre übergeordnete Struktur mittels METS-Pointern untereinander verknüpft
2665- werden. Dies geschieht über eine weitere METS-Datei, die nur die Zeitschrift
2666- oder das Mehrbändgie Werk beschreibt. Hier sind nur die Metadaten der
2667- Zeitschrift sowie eine logische &lt;structMap&gt; enthalten, in der alle
2668- &lt;div&gt; Elemente der Bände verzeichnet sind. Die Reihenfolge der
2669- &lt;div&gt; Elemente entspricht der Reihenfolge der Bände. Es sind keine
2670- Inhaltsdateien von dieser Datei aus verlinkt.</p>
2671-
2672- <p>Die Verknüpfung zwischen den METS-Dateien der Zeitschrift und den METS-Dateien
2673- der Bände erfolgt mittels METS-Pointer Elementen &lt;mptr&gt;, die den
2674- einzelnen &lt;div&gt; Elementen untergeordnet sind. Aus der METS-Datei
2675- des Bandes weist ein METS-Pointer auf die METS-Datei der Zeitschrift und von der
2676- METS-Datei der Zeitschrift weist jeweils ein METS-Pointer auf die zugehörige
2677- METS-Datei eines jeden Bandes.</p>
2678- </requirement>
2679-
2680- <requirement>
2681- <head>Metadaten für Strukturelemente</head>
2682-
2683- <p>Grundsätzlich können jedem &lt;div&gt; Element ein oder mehrere
2684- Metadatensektionen zugeordnet werden. Dies ist unabhängig davon, ob sich das
2685- Element in einer logischen oder einer physischen Struktur befindet. Sowohl das
2686- zvdd-Portal als auch der DFG-Viewer nutzen allerdings lediglich deskriptive
2687- Metadaten gemäß der in der Sektion "Deskriptive Metadaten" genannten Bedingungen
2688- (siehe MODS-Metadatenschema), die von der logischen &lt;structMap&gt;
2689- aus referenziert werden. Andere Metadatensektionen werden ignoriert. </p>
2690- </requirement>
2691-
2692- <requirement RELATEDMAT="example12">
2693- <head>Verweise auf Dateien &#8211; physische Struktur</head>
2694-
2695- <p>Um von einem &lt;div&gt; Element auf zugehörige Dateien zu verweisen,
2696- wird das File-Pointer Element &lt;fptr&gt; benutzt. Dieses Element ist
2697- daher immer Kind-Element des &lt;div&gt; Elements, für welches es die
2698- Dateien verlinkt. Jedes &lt;div&gt; Element kann einen oder mehrere
2699- File-Pointer besitzen. </p>
2700-
2701- <p>Ein File-Pointer verweist immer auf eine Datei, die in der File-Sektion an
2702- beliebiger Stelle aufgeführt ist; das heißt, die Dateien können in verschiedenen
2703- File-Groups enthalten sein. Die Verknüpfung erfolgt über das FILEID Attribut.
2704- Jedes &lt;fptr&gt; Element muss ein FILEID Attribut besitzen. </p>
2705-
2706- <p>Dateien, die lediglich den Inhalt einer Seite wiedergeben (bspw. Seiten), werden
2707- nur aus der physischen Dokumentenstruktur heraus verlinkt &#8211; konkret:
2708- nur aus den &lt;div&gt; Elementen heraus, die die jeweilige Seite
2709- repräsentieren. Durch die hierarchische Struktur wird eine Verknüpfung der den
2710- Seiten zugeordneten Dateien (Seitenimages) zur gebundenen Einheit implizit
2711- ausgedrückt. Den unterliegenden Strukturen (bspw. Seiten) zugeordneten Dateien
2712- dürfen den überliegenden Strukturen nicht explizit ein weiteres Mal zugeordnet
2713- werden. </p>
2714-
2715- <p>Generell dürfen nur &lt;file&gt; Elemente verlinkt werden, Verknüpfungen
2716- zu &lt;fileGrp&gt; Elemente sind unzulässig. Damit der DFG-Viewer
2717- entsprechende Seiten anzeigen kann, müssen zu jedem &lt;div&gt; vom Typ
2718- "page" mindestens zwei Verknüpfungen vorhanden sein. Eine Verknüpfung muss
2719- jeweils auf je eine Datei aus den beiden Pflichtdateigruppen "DEFAULT" und "MIN"
2720- erfolgen. Wenn weitere File-Groups vorhanden sind, werden auch diese hier
2721- verlinkt.</p>
2722-
2723- <p>Für den DFG-Viewer können in der physischen Struct-Map Verweise auf Dateien für
2724- den Download einzelner Seiten referenziert werden, ein solcher
2725- Einzelseiten-Download wird dann entsprechend im DFG-Viewer angeboten. Ein
2726- Verweis auf einen Gesamt-Download im obersten &lt;div&gt; wird nur dann
2727- angezeigt, wenn kein entsprechender Verweis in der logischen Struct-Map
2728- vorhanden ist. Siehe auch Kapitel "Verweise auf Dateien &#8211; logische
2729- Struktur".</p>
2730- </requirement>
2731-
2732- <requirement RELATEDMAT="example13">
2733- <head>Verweise auf Dateien &#8211; logische Struktur</head>
2734-
2735- <p>Ebenso wie aus der physischen Struktur können Verknüpfungen auf Dateien aus der
2736- logischen Struktur heraus gesetzt werden. Eine aus der logischen Struktur heraus
2737- verknüpfte Datei muss jedoch den kompletten Inhalt der entsprechenden logischen
2738- Dokumentstruktur enthalten. Beispiel für eine solche Verknüpfung kann bspw. der
2739- Link auf eine PDF-Datei sein, die eine komplette Monographie oder ein einzelnes
2740- Kapitel derselben enthält. Es ist nicht erlaubt, Verweise auf mehrere Dateien,
2741- die erst als Sequenz den kompletten Inhalt der logischen Struktur wiedergeben
2742- für dieses &lt;div&gt; Element zu setzen. </p>
2743-
2744- <p>Sinnvoll ist ein solcher Verweis immer dann, wenn die verknüpfte Datei nicht
2745- granular genug adressiert werden kann, um sie aus der physischen Struktur heraus
2746- zu verlinken; bspw. wenn keine entsprechenden Seitenumbrüche in der Datei
2747- enthalten sind oder diese den Download kompletter logischer Strukturen
2748- ermöglicht. </p>
2749-
2750- <p>Der DFG-Viewer nutzt gezielt die Verknüpfungen von logischen Strukturelementen
2751- auf Dateien der File-Group vom Typ DOWNLOAD, um den Download einzelner Kapitel
2752- und kompletter Werke zu ermöglichen. Ist an dieser Stelle ein Verweis auf das
2753- komplette Werk vorhanden, wird dieser vom DFG-Viewer bevorzugt als Link zum
2754- Herunterladen des gesamten Dokuments angezeigt. Die entsprechenden Dateien
2755- müssen innerhalb der &lt;fileSec&gt; definiert sein und dessen
2756- &lt;file&gt; Elemente müssen über entsprechende MIMETYPE Attribute
2757- verfügen. Pro logischer Struktureinheit wird nur eine &#8211; die erste
2758- &#8211; Verknüpfung mit einer Datei unterstützt. Eine solche Verknüpfung ist
2759- für den DFG-Viewer optional, wenn das Dokument das Seitenbasierte oder das
2760- Komplexe Dokumentenmodell implementiert. Wird das Bibliographische
2761- Dokumentenmodell implementiert, ist ein solcher Link verpflichtend, da er die
2762- einzige Verknüpfung zum Inhalt darstellt. </p>
2763-
2764- <p>Inhalte dürfen entweder direkt aus der logischen Struktur heraus oder aber
2765- indirekt über eine Verknüpfung der logischen Struktur mit der physischen
2766- Struktur verknüpft werden. Eine Redundanz der Verknüpfung auf eine Datei aus
2767- beiden Strukturen heraus ist auf alle Fälle zu vermeiden. Eine Verknüpfung auf
2768- einzelne Seiten-Images für ein logisches &lt;div&gt; ist nicht erlaubt,
2769- wenn bereits von einem physischen Strukturelement (bspw. einer Seite) auf
2770- dasselbe Seitenimage verwiesen wird. Stattdessen ist das logische
2771- &lt;div&gt; Element mit der Seite über die &lt;structLink&gt;
2772- Sektion zu verknüpfen und von der Seite auf das entsprechende Image zu
2773- verweisen. Für das Blättern der Seiten im DFG-Viewer ist eine entsprechende
2774- Verknüpfung nicht relevant. Jedoch könnte der DFG-Viewer dem Benutzer ein Link
2775- auf das PDF im Originalrepository anbieten. </p>
2776- </requirement>
2777-
2778- <requirement>
2779- <head>Mehrfache Verknüpfungen aus einer &lt;div&gt; Sektion</head>
2780-
2781- <p>Werden mehrere Dateien aus einem &lt;div&gt; Element heraus verknüpft, so
2782- müssen diese Dateien denselben semantischen Inhalt beinhalten. Die
2783- Darstellungsform kann jedoch unterschiedlich sein. Dazu ist es notwendig, dass
2784- sich die verknüpften Dateien in unterschiedlichen File-Groups befinden. Somit
2785- lassen sich für ein &lt;div&gt; unterschiedliche Auflösungen ein und
2786- dergleichen Seite in unterschiedlichen &lt;file&gt; Elemente speichern
2787- und dieser Seite zuordnen. </p>
2788-
2789- <p>Parallel oder in sequentieller Reihenfolge darstellbare Dateien werden nicht
2790- unterstützt, das heißt &lt;par&gt; und &lt;seq&gt; Elemente
2791- dürfen in der METS-Datei nicht enthalten sein. </p>
2792- </requirement>
2793-
2794- <requirement RELATEDMAT="example14">
2795- <head>Verknüpfungen in Dateien</head>
2796-
2797- <p>Teilweise unterscheidet sich die Granularität des Dokuments von der Granularität
2798- der einzelnen Content-Files. So kann es sinnvoll sein, Dokumente in der
2799- logischen oder physischen Struktur feiner granuliert zu erfassen, als dies für
2800- eine Speicherung der Inhalte sinnvoll ist. Als Beispiel ist hier die Speicherung
2801- von Volltexten zu nennen. In aller Regel werden Volltexte gemäß der
2802- TEI-Spezifikation immer komplett für ein Dokument in einer XML-Datei
2803- gespeichert, das heißt der Volltext umfasst mehrere Seiten, die innerhalb des
2804- Textes markiert sind. Daher stellt METS Möglichkeiten bereit, direkt in eine
2805- solche Datei hinein zu verweisen, um den Start und das Ende des jeweiligen
2806- Inhalts des &lt;div&gt; Elements in der Inhaltsdatei zu markieren. </p>
2807-
2808- <p>Mittels einer solchen granularen Verknüpfung kann das zvdd-Portal Volltexte
2809- seitenbasiert indexieren und den Volltext entsprechenden Strukturelementen
2810- (&lt;div&gt;s) zuordnen. Der DFG-Viewer könnte in späteren Versionen in
2811- der Lage sein, neben reinen Images auch Volltexte seitenbasiert dazustellen bzw.
2812- mittels solcher Information Suchtreffer in den Images zu markieren. Die
2813- Unterstützung von Volltext ist generell sowohl im DFG-Viewer als auch im
2814- zvdd-Portal optional. </p>
2815-
2816- <p>Eine solche Verknüpfung erfolgt über das &lt;area&gt; Element, welches
2817- als Kind-Element des jeweiligen File-Pointes (&lt;fptr&gt; Element)
2818- existiert. Ist ein &lt;area&gt; Element vorhanden, so wird von diesem
2819- Element mittels des FILEID Attributs auf die Inhaltsdatei verwiesen. In diesem
2820- Fall darf das &lt;fptr&gt; Element selber kein FILEID Element besitzen. </p>
2821-
2822- <p>Als erste Verweisart wird der Verweis in Imagebereiche unterstüzt. Hierbei
2823- enthält der Verweis Pixelkoordinaten, um einen Bereich innerhalb des
2824- referenzierten Images zu markieren, welcher den Inhalt des jeweiligen
2825- &lt;div&gt; Elements wiedergibt. Ein solcher Verweis muss folgende
2826- Attribute für das &lt;area&gt; beinhalten:</p>
2827-
2828- <p>SHAPE &#8212; Die Form des Bereiches: "RECT", "CIRCLE" oder "POLY".</p>
2829-
2830- <p>COORDS &#8212; Die Koordinateninformation des Bereichs gemäß HTML 4.0.</p>
2831-
2832- <p>Als zweite Verweisart wird der Verweis in XML-Dateien hinein untersützt. Ein
2833- solcher Verweis wird mittels ID Attributen durchgeführt. Das heißt in der
2834- Ziel-Datei müssen XML-Elemente existieren, die über ID Attribute mit den
2835- angegebenen Werten verfügen. In diesem Fall muss das &lt;area&gt;
2836- Element die Attribute BETYPE mit dem Wert "IDREF" enthalten und die Attribute
2837- BEGIN und END müssen die jeweiligen Werte der ID Attribute der Volltextdatei
2838- enthalten. Soll nur auf ein einzelnes Element verwiesen werden, so enthalten die
2839- BEGIN und END Attribute denselben Wert.</p>
2840-
2841- <p>Andere Verweisarten bspw. über Timecode oder Binär-Offsets dürfen in der
2842- METS-Datei nicht vorkommen.</p>
2843- </requirement>
2844- </structMap>
2845-
2846- <!--
2847- ***************************************************************************
2848- ** Requirements for the structLink
2849- *************************************************************************** -->
2850-
2851- <structLink>
2852- <requirement RELATEDMAT="example15">
2853- <head>Verknüpfung von logischer und physischer Struktur</head>
2854-
2855- <p>Jedes METS-Dokument, welches sowohl eine logische als auch eine physische
2856- &lt;structMap&gt; besitzt, muss eine &lt;structLink&gt; Sektion
2857- haben. Dies betrifft also alle METS-Dokumente, die entsprechend des
2858- Seitenbasierten sowie des Komplexen Dokumentmodells erstellt wurden. </p>
2859-
2860- <p>Die &lt;structLink&gt; Sektion speichert Verknüpfungen zwischen logischer
2861- und physischer Struktur. Für jede einzelne Verknüpfung wird ein eigenes
2862- &lt;smLink&gt; Element genutzt. Jedes dieser Elemente verfügt über
2863- xlink:from and xlink:to Attribute, welche die Werte der ID Attribute der
2864- jeweiligen &lt;div&gt; Elemente aus der logischen und physischen
2865- Struktur beinhalten. </p>
2866-
2867- <p>Es wird immer von der logischen Struktur auf die physische Struktur verwiesen.
2868- Dies bedeutet, dass das xlink:from Attribut den ID-Wert eines
2869- &lt;div&gt; Elements aus der logischen Struktur enthalten muss; xlink:to
2870- beinhaltet demzufolge also den Wert des ID Attributs eines &lt;div&gt;s
2871- aus der physischen Struktur. </p>
2872- </requirement>
2873-
2874- <requirement RELATEDMAT="example16">
2875- <head>Vererbung von Strukturverknüpfungen</head>
2876-
2877- <p>Eine Verknüfung auf eine physische Struktur bezieht sich auch immer auf alle
2878- unterliegenden Strukturelemente. Eine Verknüpfung von der obersten logischen
2879- Struktureinheit (bspw. Monographie) auf die physische Sequenz (physSequence)
2880- impliziert also auch alle Verknüpfungen auf die einzelnen Seiten, die dem
2881- physischen Sequenz untergeordnet sind. Eine explizite Verknüpfung zwischen
2882- Monographie und den einzelnen Seiten sind nicht notwendig. </p>
2883-
2884- <p>Dagegen werden Verknüpfungen auf logischer Struktur NICHT vererbt. Das heißt für
2885- jedes logische &lt;div&gt; Element sind alle Verknüpfungen erneut wieder
2886- aufzuführen. Die Gesamtheit aller unterliegenden &lt;div&gt; Elemente
2887- muss jedoch nicht zwangsläufig alle Verknüpfungen des übergeordneten
2888- &lt;div&gt; Elements enthalten. </p>
2889-
2890- <p>Dies bedeutet, dass für das Seitenbasierte Dokumentenmodell, welches vom
2891- DFG-Viewer implementiert wird, lediglich eine Verknüpfung von der obersten
2892- logischen Dokumentstruktur auf die physSequence notwendig ist. Die definierten
2893- Seiten müssen nicht aus der logischen Struktur heraus verknüpft werden. Der
2894- DFG-Viewer ist in der Lage, den impliziten Verknüpfungen zu folgen. </p>
2895- </requirement>
2896- </structLink>
2897- </structural_requirements>
2898-
2899- <!--
2900- ***************************************************************************
2901- ** Technical Requirements
2902- *************************************************************************** -->
2903-
2904- <technical_requirements>
2905- <content_files>
2906- <requirement>
2907- <head>Images</head>
2908-
2909- <p>Alle Images, die in den vom DFG-Viewer genutzten File-Groups als Content-File
2910- referenziert werden, müssen in einem Format vorliegen, welches direkt durch
2911- einen Web-Browser darstellbar ist. Als solche Formate gelten derzeit JPG, GIF
2912- und PNG. Andere Formate werden nicht unterstüzt. Eine Ausnahme bilden all jene
2913- Dateien, die in der File-Group vom Typ DOWNLOAD enthalten sind. Hierbei handelt
2914- es sich überwiegend um Dateien, die dem Nutzer zum Download angeboten werden,
2915- beispielsweise PDF.</p>
2916- </requirement>
2917-
2918- <requirement>
2919- <head>Volltexte</head>
2920-
2921- <p>Derzeit existiert noch keine Beschreibung eines standarisierten Formats für den
2922- Volltext zur Präsentation im DFG-Viewer oder zur Indexierung im zvdd-Portal.
2923- Entsprechend wird Volltext, so er denn als Content-File referenziert wird, durch
2924- beide Applikationen nicht berücksichtigt. </p>
2925- </requirement>
2926- </content_files>
2927-
2928- <metadata_files>
2929- <requirement>
2930- <head>Metadaten-Dateien</head>
2931-
2932- <p>Alle durch den DFG-Viewer und das zvdd-Portal zu berücksichtigen Metadaten müssen
2933- direkt in die METS-Datei eingefügt werden. Referenzierungen werden nicht
2934- berücksichtigt. Es existieren also keine Metadaten-Dateien.</p>
2935- </requirement>
2936- </metadata_files>
2937- </technical_requirements>
2938-
2939- <!--
2940- ***************************************************************************
2941- ** Tool
2942- *************************************************************************** -->
2943-
2944- <tool />
2945-
2946- <!--
2947- ***************************************************************************
2948- ** Appendix
2949- *************************************************************************** -->
2950-
2951- <!--
2952- ===========================================================================
2953- == Beispiel Nr.1: Identifizierung eines <div>
2954- =========================================================================== -->
2955-
2956- <Appendix ID="example01" LABEL="Identifizierung eines &lt;div&gt;" NUMBER="1">
2957-
2958- <mets:mets>
2959- <mets:dmdSec ID="DMD_00">
2960- <mets:mdWrap MDTYPE="MODS">
2961- <mets:xmlData>
2962- <!-- Der MODS-spezifische Metadatenblock beginnt hier -->
2963- <mods:mods>
2964- <!-- Eindeutige Identifizierung des entsprechenden <div> Elements -->
2965- <mods:identifier type="urn">urn:nbn:gbv-7-PPN481399712</mods:identifier>
2966- </mods:mods>
2967- </mets:xmlData>
2968- </mets:mdWrap>
2969- </mets:dmdSec>
2970-
2971- <!-- Logische Struct-Map -->
2972- <mets:structMap TYPE="LOGICAL">
2973- <mets:div DMDID="DMD_00" TYPE="Monograph" />
2974- </mets:structMap>
2975- </mets:mets>
2976-
2977- </Appendix>
2978-
2979- <!--
2980- ===========================================================================
2981- == Beispiel Nr.2: Hierarchische Verknüpfung zweier Dokumente mittels MODS
2982- == - nachfolgendes und übergeordnetes Element
2983- =========================================================================== -->
2984-
2985- <Appendix ID="example02"
2986- LABEL="Hierarchische Verknüpfung zweier Dokumente mittels MODS - nachfolgendes und übergeordnetes Element"
2987- NUMBER="2">
2988-
2989- <!-- Nachfolgendes Element -->
2990- <mets:mets>
2991- <mets:dmdSec ID="DMD_01">
2992- <mets:mdWrap MDTYPE="MODS">
2993- <mets:xmlData>
2994- <mods:mods>
2995- <!-- Eindeutige Identifizierung des <div> Elements -->
2996- <mods:identifier type="urn">urn:nbn:gbv-7-PPN481399712</mods:identifier>
2997- <!-- Identifizierung des Elements -->
2998- <mods:recordInfo>
2999- <mods:recordIdentifier source="gbv-ppn"
3000- >PPN481399712</mods:recordIdentifier>
3001- </mods:recordInfo>
3002- <!-- Verknüpfung zum übergeordneten Element -->
3003- <mods:relatedItem type="host">
3004- <mods:recordInfo>
3005- <mods:recordIdentifier source="gbv-ppn"
3006- >PPN515678759</mods:recordIdentifier>
3007- </mods:recordInfo>
3008- </mods:relatedItem>
3009- </mods:mods>
3010- </mets:xmlData>
3011- </mets:mdWrap>
3012- </mets:dmdSec>
3013-
3014- <!-- Logische Struct-Map -->
3015- <mets:structMap TYPE="LOGICAL">
3016- <mets:div DMDID="DMD_01" />
3017- </mets:structMap>
3018- </mets:mets>
3019-
3020- <!-- Übergeordnetes Element -->
3021- <mets:mets>
3022- <mets:dmdSec ID="DMD_02">
3023- <mets:mdWrap MDTYPE="MODS">
3024- <mets:xmlData>
3025- <mods:mods>
3026- <!-- Eindeutige Identifizierung des <div> Elements -->
3027- <mods:identifier type="urn">urn:nbn:gbv-7-PPN515678759</mods:identifier>
3028- <!-- Identifizierung des Elements -->
3029- <mods:recordInfo>
3030- <mods:recordIdentifier source="gbv-ppn"
3031- >PPN515678759</mods:recordIdentifier>
3032- </mods:recordInfo>
3033- </mods:mods>
3034- </mets:xmlData>
3035- </mets:mdWrap>
3036- </mets:dmdSec>
3037-
3038- <!-- Logische Struct-Map -->
3039- <mets:structMap TYPE="LOGICAL">
3040- <mets:div DMDID="DMD_02" />
3041- </mets:structMap>
3042- </mets:mets>
3043-
3044- </Appendix>
3045-
3046- <!--
3047- ===========================================================================
3048- == Beispiel Nr.3: Verweis auf die Bandnummer des übergeordneten Werkes
3049- =========================================================================== -->
3050-
3051- <Appendix ID="example03" LABEL="Verweis auf die Bandnummer des übergeordneten Werkes" NUMBER="3">
3052-
3053- <mets:mets>
3054- <mets:dmdSec ID="DMD_03">
3055- <mets:mdWrap MDTYPE="MODS">
3056- <mets:xmlData>
3057- <mods:mods>
3058- <!-- Eindeutige Identifizierung des entsprechenden <div> Elements -->
3059- <mods:identifier type="urn">urn:nbn:gbv-7-481399712</mods:identifier>
3060- <!-- Verknüpfung zum übergeordneten Element -->
3061- <mods:relatedItem type="host">
3062- <mods:recordInfo>
3063- <mods:recordIdentifier source="gbv-ppn"
3064- >PPN515678759</mods:recordIdentifier>
3065- </mods:recordInfo>
3066- </mods:relatedItem>
3067- <!-- Einordnung innerhalb des übergeordneten Elements -->
3068- <mods:part order="80">
3069- <mods:detail type="volume">
3070- <mods:number>Achte Theil</mods:number>
3071- </mods:detail>
3072- </mods:part>
3073- </mods:mods>
3074- </mets:xmlData>
3075- </mets:mdWrap>
3076- </mets:dmdSec>
3077-
3078- <!-- Logische Struct-Map -->
3079- <mets:structMap TYPE="LOGICAL">
3080- <mets:div DMDID="DMD_03" />
3081- </mets:structMap>
3082- </mets:mets>
3083-
3084- </Appendix>
3085-
3086- <!--
3087- ===========================================================================
3088- == Beispiel Nr.4: Metadaten zu Rechteinhaber und Urheber
3089- =========================================================================== -->
3090-
3091- <Appendix ID="example04" LABEL="Metadaten zu Rechteinhaber und Urheber" NUMBER="4">
3092-
3093- <mets:mets>
3094- <mets:amdSec ID="ex04__AMD_00">
3095- <!-- rightsMD Sektion -->
3096- <mets:rightsMD ID="ex04__RIGHTSMD_00">
3097- <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="DFGRIGHTS">
3098- <mets:xmlData>
3099- <!-- Hier wird der DFG-Namespace definiert;
3100- momentan existiert noch kein Schema dafür -->
3101- <dv:rights xmlns:dv="http://dfg-viewer.de/">
3102- <dv:owner>Digitalisierungszentrum der Niedersächsischen Staats- und
3103- Universitätsbibliothek Göttingen</dv:owner>
3104- <dv:ownerLogo>http://gdz.sub.uni-goettingen.de/logo_gdz_dfgv.png</dv:ownerLogo>
3105- <dv:ownerSiteURL>http://gdz.sub.uni-goettingen.de</dv:ownerSiteURL>
3106- </dv:rights>
3107- </mets:xmlData>
3108- </mets:mdWrap>
3109- </mets:rightsMD>
3110- <!-- digiprovMD Sektion siehe unten -->
3111- </mets:amdSec>
3112-
3113- <!-- Logische Struct-Map -->
3114- <mets:structMap TYPE="LOGICAL">
3115- <mets:div ADMID="ex04__AMD_00" TYPE="Monograph" />
3116- </mets:structMap>
3117- </mets:mets>
3118-
3119- </Appendix>
3120-
3121- <!--
3122- ===========================================================================
3123- == Beispiel Nr.5: Metadaten zu Herkunft und Online-Präsentation
3124- =========================================================================== -->
3125-
3126- <Appendix ID="example05" LABEL="Metadaten zu Herkunft und Online-Präsentation" NUMBER="5">
3127-
3128- <mets:mets>
3129- <mets:amdSec ID="ex05__AMD_00">
3130- <!-- rightsMD Sektion siehe oben -->
3131- <!-- digiprovMD Sektion -->
3132- <mets:digiprovMD ID="ex05__DIGIPROVMD_00">
3133- <mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVLINKS">
3134- <mets:xmlData>
3135- <!-- Hier wird der DFG-Namespace definiert;
3136- momentan existiert noch kein Schema dafür -->
3137- <dv:links xmlns:dv="http://dfg-viewer.de/">
3138- <dv:reference>http://opac.sub.uni-goettingen.de/DB=1/PPN?PPN=394930762</dv:reference>
3139- <dv:presentation>http://resolver.sub.uni-goettingen.de/purl?PPN394930762</dv:presentation>
3140- </dv:links>
3141- </mets:xmlData>
3142- </mets:mdWrap>
3143- </mets:digiprovMD>
3144- </mets:amdSec>
3145-
3146- <!-- Logische Struct-Map -->
3147- <mets:structMap TYPE="LOGICAL">
3148- <mets:div ADMID="ex05__AMD_00" TYPE="Periodical" />
3149- </mets:structMap>
3150- </mets:mets>
3151-
3152- </Appendix>
3153-
3154- <!--
3155- ===========================================================================
3156- == Beispiel Nr.6: Definition von Inhaltsdateien in verschiedenen Gruppen
3157- =========================================================================== -->
3158-
3159- <Appendix ID="example06" LABEL="Definition von Inhaltsdateien in verschiedenen File-Groups"
3160- NUMBER="6">
3161-
3162- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3163- <mets:fileSec>
3164-
3165- <!-- Enthält alle Images in der beim Start des Viewers angezeigten Version -->
3166- <mets:fileGrp USE="DEFAULT">
3167- <mets:file ID="ex06__FILE00_DEF" MIMETYPE="image/tiff" SIZE="43630">
3168- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/default/image/00.tif"
3169- />
3170- </mets:file>
3171- <mets:file ID="ex06__FILE01_DEF" MIMETYPE="image/tiff" SIZE="63235">
3172- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/default/image/01.tif"
3173- />
3174- </mets:file>
3175- <mets:file ID="ex06__FILE02_DEF" MIMETYPE="image/tiff" SIZE="225434">
3176- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/default/image/02.tif"
3177- />
3178- </mets:file>
3179- </mets:fileGrp>
3180-
3181- <!-- Enthält alle Images in einer kleineren Version. Diese fileGrp muss genauso
3182- viele Images enthalten wie alle anderen fileGrps -->
3183- <mets:fileGrp USE="MIN">
3184- <mets:file ID="ex06__FILE00_MIN" MIMETYPE="image/png" SIZE="2356">
3185- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/smaller/image/00.png"
3186- xmlns:xlink="http://www.w3.org/1999/xlink" />
3187- </mets:file>
3188- <mets:file ID="ex06__FILE01_MIN" MIMETYPE="image/png" SIZE="3976">
3189- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/smaller/image/01.png"
3190- xmlns:xlink="http://www.w3.org/1999/xlink" />
3191- </mets:file>
3192- <mets:file ID="ex06__FILE02_MIN" MIMETYPE="image/png" SIZE="6472">
3193- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/smaller/image/02.png"
3194- xmlns:xlink="http://www.w3.org/1999/xlink" />
3195- </mets:file>
3196- </mets:fileGrp>
3197-
3198- <!-- Die weiteren (optionalen) fileGrps folgen hier -->
3199- </mets:fileSec>
3200-
3201- <!-- Physische Struct-Map -->
3202- <mets:structMap TYPE="PHYSICAL">
3203- <mets:div TYPE="physSequence" />
3204- </mets:structMap>
3205- </mets:mets>
3206-
3207- </Appendix>
3208-
3209- <!--
3210- ===========================================================================
3211- == Beispiel Nr.7: Die vom DFG-Viewer unterstützten <FileGrp> Elemente
3212- =========================================================================== -->
3213-
3214- <Appendix ID="example07"
3215- LABEL="Die vom DFG-Viewer unterstützten &lt;FileGrp&gt; Elemente" NUMBER="7">
3216-
3217- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3218- <mets:fileSec>
3219-
3220- <!-- Enthält alle Images in der beim Start des DFG-Viewers angezeigten Version -->
3221- <mets:fileGrp USE="DEFAULT">
3222- <mets:file ID="ex07__FILE00_DEF" MIMETYPE="image/jpeg" SIZE="51654">
3223- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/default/image/00.jpg"
3224- />
3225- </mets:file>
3226- <mets:file ID="ex07__FILE01_DEF" MIMETYPE="image/jpeg" SIZE="46566">
3227- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/default/image/01.jpg"
3228- />
3229- </mets:file>
3230- </mets:fileGrp>
3231-
3232- <!-- Enthält alle Images in einer kleineren Version -->
3233- <mets:fileGrp USE="MIN">
3234- <mets:file ID="ex07__FILE00_MIN" MIMETYPE="image/jpeg" SIZE="23630">
3235- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/smaller/image/00.jpg"
3236- />
3237- </mets:file>
3238- <mets:file ID="ex07__FILE01_MIN" MIMETYPE="image/jpeg" SIZE="19233">
3239- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/smaller/image/01.jpg"
3240- />
3241- </mets:file>
3242- </mets:fileGrp>
3243-
3244- <!-- Enthält alle Images in der größt möglichen Version -->
3245- <mets:fileGrp USE="MAX">
3246- <mets:file ID="ex07__FILE00_MAX" MIMETYPE="image/jpeg" SIZE="643630">
3247- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/bigger/image/00.jpg"
3248- />
3249- </mets:file>
3250- <mets:file ID="ex07__FILE01_MAX" MIMETYPE="image/jpeg" SIZE="591244">
3251- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/bigger/image/01.jpg"
3252- />
3253- </mets:file>
3254- </mets:fileGrp>
3255-
3256- <!-- Enthält alle Images in einer kleinen Vorschau-Version -->
3257- <mets:fileGrp USE="THUMBS">
3258- <mets:file ID="ex07__FILE00_THB" MIMETYPE="image/png" SIZE="8234">
3259- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/thumb/image/00.png" />
3260- </mets:file>
3261- <mets:file ID="ex07__FILE01_THB" MIMETYPE="image/png" SIZE="8775">
3262- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/thumb/image/01.png" />
3263- </mets:file>
3264- </mets:fileGrp>
3265-
3266- <!-- Enthält zum Download angebotenen Dateien, beispielsweise PDF- oder
3267- TIFF-Dateien -->
3268- <mets:fileGrp USE="DOWNLOAD">
3269- <mets:file ID="ex07__FILE00_DWL" MIMETYPE="application/pdf" SIZE="12057">
3270- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/pdf/00.pdf" />
3271- </mets:file>
3272- <mets:file ID="ex07__FILE01_DWL" MIMETYPE="application/pdf" SIZE="13001">
3273- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/pdf/01.pdf" />
3274- </mets:file>
3275- </mets:fileGrp>
3276- </mets:fileSec>
3277-
3278- <!-- Physische Struct-Map -->
3279- <mets:structMap TYPE="PHYSICAL">
3280- <mets:div TYPE="physSequence" />
3281- </mets:structMap>
3282- </mets:mets>
3283-
3284- </Appendix>
3285-
3286- <!--
3287- ===========================================================================
3288- == Beispiel Nr.8: <structMap> beim Bibliographischen Dokumentenmodell
3289- =========================================================================== -->
3290-
3291- <Appendix ID="example08"
3292- LABEL="&lt;structMap&gt; beim Bibliographischen Dokumentenmodell" NUMBER="8">
3293-
3294- <mets:mets>
3295- <mets:structMap TYPE="LOGICAL">
3296- <mets:div DMDID="DMD_00" TYPE="Monograph" />
3297- </mets:structMap>
3298- </mets:mets>
3299-
3300- </Appendix>
3301-
3302- <!--
3303- ===========================================================================
3304- == Beispiel Nr.9: <structMap> der physischen Struktur
3305- =========================================================================== -->
3306-
3307- <Appendix ID="example9" LABEL="&lt;structMap&gt; der physischen Struktur" NUMBER="9">
3308-
3309- <mets:mets>
3310- <!-- Logische Struct-Map -->
3311- <mets:structMap TYPE="LOGICAL">
3312- <mets:div DMDID="DMD_00" ID="ex09__LOG_00" TYPE="Monograph" />
3313- </mets:structMap>
3314-
3315- <!-- Physische Struct-Map -->
3316- <mets:structMap TYPE="PHYSICAL">
3317- <mets:div ID="ex09__PHYS_00" TYPE="physSequence">
3318- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__PHYS_01"
3319- ID="ex09__PHYS_01" ORDER="1" ORDERLABEL="I" TYPE="page" />
3320- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__PHYS_02"
3321- ID="ex09__PHYS_02" ORDER="2" ORDERLABEL="II" TYPE="page" />
3322- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__PHYS_03"
3323- ID="ex09__PHYS_03" ORDER="3" ORDERLABEL="III" TYPE="page" />
3324- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__PHYS_04"
3325- ID="ex09__PHYS_04" ORDER="4" ORDERLABEL="1" TYPE="page" />
3326- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__PHYS_05"
3327- ID="ex09__PHYS_05" ORDER="5" ORDERLABEL="2" TYPE="page" />
3328- </mets:div>
3329- </mets:structMap>
3330- </mets:mets>
3331-
3332- </Appendix>
3333-
3334- <!--
3335- ===========================================================================
3336- == Beispiel Nr.10: Verschachtelung der <structMap> Elemente der logische
3337- == Dokumentstruktur
3338- =========================================================================== -->
3339-
3340- <Appendix ID="example10"
3341- LABEL="Verschachtelung der &lt;structMap&gt; Elemente der logische Dokumentstruktur"
3342- NUMBER="10">
3343-
3344- <mets:mets>
3345- <mets:structMap TYPE="LOGICAL">
3346- <!-- Logisches Strukturelement für die Monographie -->
3347- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-" DMDID="DMD_00"
3348- ID="ex10__LOG_00" LABEL="Monographie" TYPE="Monograph">
3349-
3350- <!-- Logisches Strukturelement für das erste Kapitel mit Unterteilung -->
3351- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__LOG_01" DMDID="DMD_01"
3352- ID="ex10__LOG_01" LABEL="Erstes Kapitel" TYPE="Chapter">
3353- <!-- Logisches Strukturelement für ein Inhaltsverzeichnis -->
3354- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__LOG_02"
3355- ID="ex10__LOG_02" LABEL="Illustration" TYPE="Illustration" />
3356- <!-- Logisches Strukturelement für eine Textpassage -->
3357- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__LOG_03"
3358- ID="ex10__LOG_03" LABEL="Textabschnitt" TYPE="TextSection" />
3359- </mets:div>
3360-
3361- <!-- Logische Strukturelemente für zwei weitere Kapitel ohne weitere
3362- Unterteilung -->
3363- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__LOG_04" DMDID="DMD_02"
3364- ID="ex10__LOG_04" LABEL="Zweites Kapitel" TYPE="Chapter" />
3365- <mets:div CONTENTIDS="urn:nbn:de:gbv-7-gdz-12345678-ex10__LOG_05"
3366- ID="ex10__LOG_05" LABEL="Drittes Kapitel" TYPE="Chapter" />
3367- </mets:div>
3368- </mets:structMap>
3369- </mets:mets>
3370-
3371- </Appendix>
3372-
3373- <!--
3374- ===========================================================================
3375- == Beispiel Nr.11: Logische Struct-Map für einen Band und eine
3376- == übergeordnete Zeitschrift (der Übersichtlichkeit halber ohne
3377- == CONTENTIDS)
3378- =========================================================================== -->
3379-
3380- <Appendix ID="example11"
3381- LABEL="Logische Struct-Map für einen Band und eine übergeordnete Zeitschrift (der Übersichtlichkeit halber ohne CONTENTIDS)"
3382- NUMBER="11">
3383-
3384- <!-- Logische Struct-Map für einen Band -->
3385- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3386- <mets:structMap TYPE="LOGICAL">
3387- <mets:div LABEL="Zeitschrift" TYPE="Periodical">
3388- <!-- Der METS-Pointer referenziert die METS-Datei der Zeitschrift / des
3389- Mehrbändigen Werkes -->
3390- <mets:mptr LOCTYPE="URL" xlink:href="http://link/to/mets/file/periodical" />
3391-
3392- <!-- Hier beginnt die oben bereits besprochene Beschreibung des einzelnen
3393- Bandes -->
3394- <mets:div DMDID="DMD_00" ID="ex11__LOG_00" LABEL="Zeitschriftenband"
3395- TYPE="Volume">
3396- <mets:div DMDID="DMD_01" ID="ex11__LOG_01" LABEL="Erstes Zeitschriftenheft"
3397- TYPE="Issue">
3398- <mets:div ID="ex11__LOG_02" LABEL="Erster Artikel" TYPE="Article" />
3399- <mets:div ID="ex11__LOG_03" LABEL="Zweiter Artikel" TYPE="Article" />
3400- </mets:div>
3401- <mets:div DMDID="DMD_01" ID="ex11__LOG_04" LABEL="Zweites Zeitschriftenheft"
3402- TYPE="Issue" />
3403- <mets:div ID="ex11__LOG_05" LABEL="Drittes Zeitschriftenheft" TYPE="Issue"
3404- />
3405- </mets:div>
3406- </mets:div>
3407- </mets:structMap>
3408- </mets:mets>
3409-
3410- <!-- Logische Struct-Map für eine übergeordnete Zeitschrift -->
3411- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3412- <mets:structMap TYPE="LOGICAL">
3413- <mets:div DMDID="DMD_00" ID="ex11__LOG0_00" LABEL="Zeitschrift" TYPE="Periodical">
3414- <mets:div LABEL="Erster Zeitschriftenband" TYPE="Volume">
3415- <!-- Ein METS-Pointer auf den ersten Band der Zeitschrift -->
3416- <mets:mptr LOCTYPE="URL"
3417- xlink:href="http://link/to/mets/file/1st/volume/mets.xml" />
3418- </mets:div>
3419- <mets:div LABEL="Zweiter Zeitschriftenband" TYPE="Volume">
3420- <!-- Ein METS-Pointer auf den zweiten Band der Zeitschrift -->
3421- <mets:mptr LOCTYPE="URL"
3422- xlink:href="http://link/to/mets/file/2nd/volume/mets.xml" />
3423- </mets:div>
3424- <mets:div LABEL="Dritter Zeitschriftenband" TYPE="Volume">
3425- <!-- Ein METS-Pointer auf den dritten Band der Zeitschrift -->
3426- <mets:mptr LOCTYPE="URL"
3427- xlink:href="http://link/to/mets/file/3rd/volume/metx.xml" />
3428- </mets:div>
3429- </mets:div>
3430- </mets:structMap>
3431- </mets:mets>
3432-
3433- </Appendix>
3434-
3435- <!--
3436- ===========================================================================
3437- == Beispiel Nr.12: <structMap> der physischen Struktur
3438- =========================================================================== -->
3439-
3440- <Appendix ID="example12" LABEL="&lt;structMap&gt; der physischen Struktur" NUMBER="12">
3441-
3442- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3443- <!-- Physische Struct-Map -->
3444- <mets:structMap TYPE="PHYSICAL">
3445- <mets:div TYPE="physSequence">
3446- <!-- Aus jeder File-Group werden hier die verschiedenen
3447- Auflösungen / Formate eines jeden Files referenziert -->
3448- <mets:div ID="ex12__PHY_00" ORDER="1" ORDERLABEL="I" TYPE="page">
3449- <mets:fptr FILEID="ex07__FILE00_DEF" />
3450- <mets:fptr FILEID="ex07__FILE00_MIN" />
3451- <mets:fptr FILEID="ex07__FILE00_MAX" />
3452- <mets:fptr FILEID="ex07__FILE00_THB" />
3453- <mets:fptr FILEID="ex07__FILE00_DWL" />
3454- </mets:div>
3455- <mets:div ID="PHYS09_01" ORDER="2" ORDERLABEL="II" TYPE="page">
3456- <mets:fptr FILEID="ex07__FILE01_DEF" />
3457- <mets:fptr FILEID="ex07__FILE01_MIN" />
3458- <mets:fptr FILEID="ex07__FILE01_MAX" />
3459- <mets:fptr FILEID="ex07__FILE01_THB" />
3460- <mets:fptr FILEID="ex07__FILE01_DWL" />
3461- </mets:div>
3462- </mets:div>
3463- </mets:structMap>
3464- </mets:mets>
3465-
3466- </Appendix>
3467-
3468- <!--
3469- ===========================================================================
3470- == Beispiel Nr.13: Struct-Map der logischen Struktur mit Verweis auf eine
3471- == PDF-Datei eines Kapitels
3472- =========================================================================== -->
3473-
3474- <Appendix ID="example13"
3475- LABEL="Struct-Map der logischen Struktur mit Verweis auf eine PDF-Datei eines Artikels"
3476- NUMBER="13">
3477-
3478- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3479- <!-- File-Group als Beispiel für den File-Pointer in der logischen Struct-Map -->
3480- <mets:fileSec>
3481- <mets:fileGrp USE="DOWNLOAD">
3482- <!-- Verweis auf die PDF-Datei des Bandes -->
3483- <mets:file ID="ex13__FILE00_Monograph" MIMETYPE="application/pdf" SIZE="1643630">
3484- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/monograph.pdf" />
3485- </mets:file>
3486- <!-- Verweis auf die PDF-Datei des Kapitels -->
3487- <mets:file ID="ex13__FILE01_Chapter" MIMETYPE="application/pdf" SIZE="47676">
3488- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/chapter/01.pdf" />
3489- </mets:file>
3490- </mets:fileGrp>
3491- </mets:fileSec>
3492-
3493- <!-- Logische Struct-Map -->
3494- <mets:structMap TYPE="LOGICAL">
3495- <mets:div TYPE="Periodical">
3496- <!-- Der METS-Pointer referenziert die METS-Datei der Zeitschrift / des
3497- Mehrbändigen Werkes -->
3498- <mets:mptr LOCTYPE="URL" xlink:href="http://link/to/mets/file/periodical" />
3499-
3500- <!-- Hier beginnt die oben bereits besprochene Beschreibung des einzelnen
3501- Bandes -->
3502- <mets:div DMDID="DMD_00" ID="ex13__LOG_00" TYPE="Volume">
3503- <!-- File-Pointer auf das PDF des Bandes -->
3504- <mets:fptr FILEID="ex13__FILE00_Monograph" />
3505-
3506- <mets:div DMDID="DMD_01" ID="ex13__LOG_01" TYPE="Issue">
3507- <mets:div ID="ex13__LOG_02" TYPE="Article">
3508- <!-- File-Pointer auf das PDF eines Kapitels -->
3509- <mets:fptr FILEID="ex13__FILE01_Chapter" />
3510- </mets:div>
3511- <mets:div ID="ex13__LOG_03" TYPE="Article" />
3512- </mets:div>
3513- <mets:div DMDID="DMD_01" ID="ex13__LOG_04" TYPE="Issue" />
3514- <mets:div ID="ex13__LOG_05" TYPE="Issue" />
3515- </mets:div>
3516- </mets:div>
3517- </mets:structMap>
3518- </mets:mets>
3519-
3520- </Appendix>
3521-
3522- <!--
3523- ===========================================================================
3524- == Beispiel Nr.14: Verweis in eine Datei mittels <mets:area>
3525- =========================================================================== -->
3526-
3527- <Appendix ID="example14" LABEL="Verweis in eine Datei mittels &lt;mets:area&gt;"
3528- NUMBER="14">
3529-
3530- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3531- <mets:fileSec>
3532- <!-- Eine beispielhafte fileGrp zur Nutzung von <mets:area> -->
3533- <mets:fileGrp USE="AREA">
3534- <mets:file ID="ex14__FILE00_ARE" MIMETYPE="text/xml" SIZE="6523">
3535- <mets:FLocat LOCTYPE="URL" xlink:href="http://link/to/xml/tei/file" />
3536- </mets:file>
3537- </mets:fileGrp>
3538- </mets:fileSec>
3539-
3540- <!-- Physische Struct-Map -->
3541- <mets:structMap TYPE="PHYSICAL">
3542- <mets:div TYPE="physSequence">
3543- <mets:div ID="ex14__PHY_00" ORDER="3" ORDERLABEL="III" TYPE="page">
3544- <!-- Verweis in eine Datei hinein. Dabei wird der eigentliche
3545- Inhalt über die IDRef-Werte in den Attributen BEGIN und
3546- END definiert -->
3547- <mets:fptr>
3548- <mets:area BEGIN="TEIID_24" BETYPE="IDREF" END="TEIID_63"
3549- FILEID="ex14__FILE00_ARE" />
3550- </mets:fptr>
3551- </mets:div>
3552- </mets:div>
3553- </mets:structMap>
3554- </mets:mets>
3555-
3556- </Appendix>
3557-
3558- <!--
3559- ===========================================================================
3560- == Beispiel Nr.15: Verknüpfung von logischer und physischer Struktur
3561- =========================================================================== -->
3562-
3563- <Appendix ID="example15" LABEL="Verknüpfung von logischer und physischer Struktur" NUMBER="15">
3564-
3565- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3566- <!-- Logische Struct-Map -->
3567- <mets:structMap TYPE="LOGICAL">
3568- <mets:div ID="ex15__LOG_00" TYPE="Monograph">
3569- <mets:div ID="ex15__LOG_01" TYPE="Chapter">
3570- <mets:div ID="ex15__LOG_02" TYPE="Chapter" />
3571- <mets:div ID="ex15__LOG_03" TYPE="Chapter" />
3572- </mets:div>
3573- </mets:div>
3574- </mets:structMap>
3575-
3576- <!-- Physische Struct-Map -->
3577- <mets:structMap TYPE="PHYSICAL">
3578- <mets:div ID="ex15__PHY_00" TYPE="physSequence">
3579- <mets:div ID="ex15__PHY_01" ORDER="1" ORDERLABEL="III" TYPE="page" />
3580- <mets:div ID="ex15__PHY_02" ORDER="2" ORDERLABEL="1" TYPE="page" />
3581- <mets:div ID="ex15__PHY_03" ORDER="3" ORDERLABEL="2" TYPE="page" />
3582- <mets:div ID="ex15__PHY_04" ORDER="4" ORDERLABEL="3" TYPE="page" />
3583- <mets:div ID="ex15__PHY_05" ORDER="5" ORDERLABEL="4" TYPE="page" />
3584- </mets:div>
3585- </mets:structMap>
3586-
3587- <!-- Hier werden die logischen und die physischen Strukturelemente
3588- verknüpft -->
3589- <mets:structLink>
3590- <!-- Verknüpfung zwischen Monograph und Physical Sequence -->
3591- <mets:smLink xlink:from="ex15__LOG_00" xlink:to="ex17__PHY_00" />
3592- <!-- Verknüpfung zwischen Kapitel eins und Seiten -->
3593- <mets:smLink xlink:from="ex15__LOG_01" xlink:to="ex15__PHY_02" />
3594- <mets:smLink xlink:from="ex15__LOG_01" xlink:to="ex15__PHY_03" />
3595- <mets:smLink xlink:from="ex15__LOG_01" xlink:to="ex15__PHY_04" />
3596- <mets:smLink xlink:from="ex15__LOG_01" xlink:to="ex15__PHY_05" />
3597- <!-- Verknüpfung zwischen Kapitel zwei und Seiten -->
3598- <mets:smLink xlink:from="ex15__LOG_02" xlink:to="ex15__PHY_03" />
3599- <mets:smLink xlink:from="ex15__LOG_02" xlink:to="ex15__PHY_04" />
3600- <!-- Verknüpfung zwischen Kapitel drei und Seiten -->
3601- <mets:smLink xlink:from="ex15__LOG_03" xlink:to="ex15__PHY_04" />
3602- <mets:smLink xlink:from="ex15__LOG_03" xlink:to="ex15__PHY_05" />
3603- </mets:structLink>
3604- </mets:mets>
3605-
3606- </Appendix>
3607-
3608- <!--
3609- ===========================================================================
3610- == Beispiel Nr.16: Vererbung der Verknüpfungen auf physische Strukturen
3611- == für das Seitenbasierte Dokumentenmodell
3612- =========================================================================== -->
3613-
3614- <Appendix ID="example16"
3615- LABEL="Vererbung der Verknüpfungen auf physische Strukturen für das Seitenbasierte Dokumentenmodell"
3616- NUMBER="16">
3617-
3618- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3619- <!-- Logische Struct-Map -->
3620- <mets:structMap TYPE="LOGICAL">
3621- <mets:div ID="ex16__LOG_00" TYPE="Monograph" />
3622- </mets:structMap>
3623-
3624- <!-- Physische Struct-Map -->
3625- <mets:structMap TYPE="PHYSICAL">
3626- <mets:div ID="ex16__PHYS_00" TYPE="physSequence">
3627- <mets:div ID="ex16__PHYS_01" ORDER="1" ORDERLABEL="III" TYPE="page" />
3628- <mets:div ID="ex16__PHYS_02" ORDER="2" ORDERLABEL="1" TYPE="page" />
3629- <mets:div ID="ex16__PHYS_03" ORDER="3" ORDERLABEL="2" TYPE="page" />
3630- <mets:div ID="ex16__PHYS_04" ORDER="4" ORDERLABEL="3" TYPE="page" />
3631- <mets:div ID="ex16__PHYS_05" ORDER="5" ORDERLABEL="4" TYPE="page" />
3632- </mets:div>
3633- </mets:structMap>
3634-
3635- <!-- Hier werden die logischen und die physischen Structurelemente
3636- verknüpft -->
3637- <mets:structLink>
3638- <!-- Verknüpfung zwischen Monograph und physical Sequence -->
3639- <mets:smLink xlink:from="ex16__LOG_00" xlink:to="ex18__PHY_00" />
3640- </mets:structLink>
3641- </mets:mets>
3642-
3643- </Appendix>
3644-
3645- <!--
3646- ===========================================================================
3647- == Beispiel Nr.17: Komplettes METS-Beispiel des Seitenbasierten
3648- == Dokumentenmodells
3649- =========================================================================== -->
3650-
3651- <Appendix ID="example17" LABEL="Komplettes METS-Beispiel des Seitenbasierten Dokumentenmodells"
3652- NUMBER="17">
3653-
3654- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
3655- <mets:dmdSec ID="ex17__DMDLOG_00">
3656- <mets:mdWrap MDTYPE="MODS">
3657- <mets:xmlData>
3658- <mods:mods>
3659- <mods:identifier type="PPN">PPN521089360</mods:identifier>
3660- <mods:identifier type="PPNanalog">PPN14709481X</mods:identifier>
3661- <mods:titleInfo>
3662- <mods:subTitle>vom dato Frankfurth am Mayn am 5. et insinuato 7.
3663- Januarii An. 1763 ; mit nöthigen Anmerkungen</mods:subTitle>
3664- <mods:title>Abdruck des von dem weyland ... Anton Ulrich, Herzogen
3665- zu Sachsen ... anmasslich errichteten Testaments</mods:title>
3666- </mods:titleInfo>
3667- <mods:titleInfo type="alternative">
3668- <mods:title>Abdruck des von dem weyland ... Anton Ulrich, Herzogen
3669- zu Sachsen ... anmasslich errichteten Testaments</mods:title>
3670- </mods:titleInfo>
3671- <mods:originInfo>
3672- <mods:dateIssued encoding="w3cdtf">1763</mods:dateIssued>
3673- <mods:place>
3674- <mods:placeTerm type="text">[S.l.]</mods:placeTerm>
3675- </mods:place>
3676- <mods:publisher>[s.n.]</mods:publisher>
3677- </mods:originInfo>
3678- <mods:language>
3679- <mods:languageTerm authority="rfc3066" type="code"
3680- >de</mods:languageTerm>
3681- </mods:language>
3682- <mods:physicalDescription>
3683- <mods:extent>36 S</mods:extent>
3684- </mods:physicalDescription>
3685- </mods:mods>
3686- </mets:xmlData>
3687- </mets:mdWrap>
3688- </mets:dmdSec>
3689- <mets:amdSec ID="ex17__AMD_00">
3690- <mets:rightsMD ID="ex17__RIGHTS_00">
3691- <mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVRIGHTS">
3692- <mets:xmlData>
3693- <dv:rights xmlns:dv="http://dfg-viewer.de/">
3694- <dv:owner>Digitalisierungszentrum der Niedersächsischen Staats- und
3695- Universitätsbibliothek Göttingen</dv:owner>
3696- <dv:ownerLogo>http://gdz.sub.uni-goettingen.de/logo_gdz_dfgv.png</dv:ownerLogo>
3697- <dv:ownerSiteURL>http://gdz.sub.uni-goettingen.de</dv:ownerSiteURL>
3698- </dv:rights>
3699- </mets:xmlData>
3700- </mets:mdWrap>
3701- </mets:rightsMD>
3702- <mets:digiprovMD ID="ex17__DIGIPROV_00">
3703- <mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVLINKS">
3704- <mets:xmlData>
3705- <dv:links xmlns:dv="http://dfg-viewer.de/">
3706- <dv:reference>http://opac.sub.uni-goettingen.de/DB=1/PPN?PPN=521089360</dv:reference>
3707- <dv:presentation>http://resolver.sub.uni-goettingen.de/purl?PPN521089360</dv:presentation>
3708- </dv:links>
3709- </mets:xmlData>
3710- </mets:mdWrap>
3711- </mets:digiprovMD>
3712- </mets:amdSec>
3713- <mets:fileSec>
3714- <mets:fileGrp USE="DEFAULT">
3715- <mets:file ID="ex17__FILE00_DEF" MIMETYPE="image/jpeg"
3716- xmlns:xlink="http://www.w3.org/1999/xlink">
3717- <mets:FLocat LOCTYPE="URL"
3718- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000001.jpg"
3719- />
3720- </mets:file>
3721- <mets:file ID="ex17__FILE01_DEF" MIMETYPE="image/jpeg">
3722- <mets:FLocat LOCTYPE="URL"
3723- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000002.jpg"
3724- />
3725- </mets:file>
3726- <mets:file ID="ex17__FILE02_DEF" MIMETYPE="image/jpeg">
3727- <mets:FLocat LOCTYPE="URL"
3728- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000003.jpg"
3729- />
3730- </mets:file>
3731- <mets:file ID="ex17__FILE03_DEF" MIMETYPE="image/jpeg">
3732- <mets:FLocat LOCTYPE="URL"
3733- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000004.jpg"
3734- />
3735- </mets:file>
3736- <mets:file ID="ex17__FILE04_DEF" MIMETYPE="image/jpeg">
3737- <mets:FLocat LOCTYPE="URL"
3738- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000005.jpg"
3739- />
3740- </mets:file>
3741- <mets:file ID="ex17__FILE05_DEF" MIMETYPE="image/jpeg">
3742- <mets:FLocat LOCTYPE="URL"
3743- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000006.jpg"
3744- />
3745- </mets:file>
3746- <mets:file ID="ex17__FILE06_DEF" MIMETYPE="image/jpeg">
3747- <mets:FLocat LOCTYPE="URL"
3748- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000007.jpg"
3749- />
3750- </mets:file>
3751- <mets:file ID="ex17__FILE07_DEF" MIMETYPE="image/jpeg">
3752- <mets:FLocat LOCTYPE="URL"
3753- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000008.jpg"
3754- />
3755- </mets:file>
3756- <mets:file ID="ex17__FILE08_DEF" MIMETYPE="image/jpeg">
3757- <mets:FLocat LOCTYPE="URL"
3758- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/800/0/00000009.jpg"
3759- />
3760- </mets:file>
3761- </mets:fileGrp>
3762- <mets:fileGrp USE="MAX">
3763- <mets:file ID="ex17__FILE00_MAX" MIMETYPE="image/jpeg">
3764- <mets:FLocat LOCTYPE="URL"
3765- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000001.jpg"
3766- />
3767- </mets:file>
3768- <mets:file ID="ex17__FILE01_MAX" MIMETYPE="image/jpeg">
3769- <mets:FLocat LOCTYPE="URL"
3770- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000002.jpg"
3771- />
3772- </mets:file>
3773- <mets:file ID="ex17__FILE02_MAX" MIMETYPE="image/jpeg">
3774- <mets:FLocat LOCTYPE="URL"
3775- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000003.jpg"
3776- />
3777- </mets:file>
3778- <mets:file ID="ex17__FILE03_MAX" MIMETYPE="image/jpeg">
3779- <mets:FLocat LOCTYPE="URL"
3780- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000004.jpg"
3781- />
3782- </mets:file>
3783- <mets:file ID="ex17__FILE04_MAX" MIMETYPE="image/jpeg">
3784- <mets:FLocat LOCTYPE="URL"
3785- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000005.jpg"
3786- />
3787- </mets:file>
3788- <mets:file ID="ex17__FILE05_MAX" MIMETYPE="image/jpeg">
3789- <mets:FLocat LOCTYPE="URL"
3790- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000006.jpg"
3791- />
3792- </mets:file>
3793- <mets:file ID="ex17__FILE06_MAX" MIMETYPE="image/jpeg">
3794- <mets:FLocat LOCTYPE="URL"
3795- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000007.jpg"
3796- />
3797- </mets:file>
3798- <mets:file ID="ex17__FILE07_MAX" MIMETYPE="image/jpeg">
3799- <mets:FLocat LOCTYPE="URL"
3800- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000008.jpg"
3801- />
3802- </mets:file>
3803- <mets:file ID="ex17__FILE08_MAX" MIMETYPE="image/jpeg">
3804- <mets:FLocat LOCTYPE="URL"
3805- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/1000/0/00000009.jpg"
3806- />
3807- </mets:file>
3808- </mets:fileGrp>
3809- <mets:fileGrp USE="MIN">
3810- <mets:file ID="ex17__FILE00_MIN" MIMETYPE="image/jpeg">
3811- <mets:FLocat LOCTYPE="URL"
3812- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000001.jpg"
3813- />
3814- </mets:file>
3815- <mets:file ID="ex17__FILE01_MIN" MIMETYPE="image/jpeg">
3816- <mets:FLocat LOCTYPE="URL"
3817- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000002.jpg"
3818- />
3819- </mets:file>
3820- <mets:file ID="ex17__FILE02_MIN" MIMETYPE="image/jpeg">
3821- <mets:FLocat LOCTYPE="URL"
3822- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000003.jpg"
3823- />
3824- </mets:file>
3825- <mets:file ID="ex17__FILE03_MIN" MIMETYPE="image/jpeg">
3826- <mets:FLocat LOCTYPE="URL"
3827- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000004.jpg"
3828- />
3829- </mets:file>
3830- <mets:file ID="ex17__FILE04_MIN" MIMETYPE="image/jpeg">
3831- <mets:FLocat LOCTYPE="URL"
3832- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000005.jpg"
3833- />
3834- </mets:file>
3835- <mets:file ID="ex17__FILE05_MIN" MIMETYPE="image/jpeg">
3836- <mets:FLocat LOCTYPE="URL"
3837- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000006.jpg"
3838- />
3839- </mets:file>
3840- <mets:file ID="ex17__FILE06_MIN" MIMETYPE="image/jpeg">
3841- <mets:FLocat LOCTYPE="URL"
3842- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000007.jpg"
3843- />
3844- </mets:file>
3845- <mets:file ID="ex17__FILE07_MIN" MIMETYPE="image/jpeg">
3846- <mets:FLocat LOCTYPE="URL"
3847- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000008.jpg"
3848- />
3849- </mets:file>
3850- <mets:file ID="ex17__FILE08_MIN" MIMETYPE="image/jpeg">
3851- <mets:FLocat LOCTYPE="URL"
3852- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/500/0/00000009.jpg"
3853- />
3854- </mets:file>
3855- </mets:fileGrp>
3856- <mets:fileGrp USE="THUMBS">
3857- <mets:file ID="ex17__FILE00_THB" MIMETYPE="image/jpeg">
3858- <mets:FLocat LOCTYPE="URL"
3859- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000001.jpg"
3860- />
3861- </mets:file>
3862- <mets:file ID="ex17__FILE01_THB" MIMETYPE="image/jpeg">
3863- <mets:FLocat LOCTYPE="URL"
3864- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000002.jpg"
3865- />
3866- </mets:file>
3867- <mets:file ID="ex17__FILE02_THB" MIMETYPE="image/jpeg">
3868- <mets:FLocat LOCTYPE="URL"
3869- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000003.jpg"
3870- />
3871- </mets:file>
3872- <mets:file ID="ex17__FILE03_THB" MIMETYPE="image/jpeg">
3873- <mets:FLocat LOCTYPE="URL"
3874- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000004.jpg"
3875- />
3876- </mets:file>
3877- <mets:file ID="ex17__FILE04_THB" MIMETYPE="image/jpeg">
3878- <mets:FLocat LOCTYPE="URL"
3879- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000005.jpg"
3880- />
3881- </mets:file>
3882- <mets:file ID="ex17__FILE05_THB" MIMETYPE="image/jpeg">
3883- <mets:FLocat LOCTYPE="URL"
3884- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000006.jpg"
3885- />
3886- </mets:file>
3887- <mets:file ID="ex17__FILE06_THB" MIMETYPE="image/jpeg">
3888- <mets:FLocat LOCTYPE="URL"
3889- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000007.jpg"
3890- />
3891- </mets:file>
3892- <mets:file ID="ex17__FILE07_THB" MIMETYPE="image/jpeg">
3893- <mets:FLocat LOCTYPE="URL"
3894- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000008.jpg"
3895- />
3896- </mets:file>
3897- <mets:file ID="ex17__FILE08_THB" MIMETYPE="image/jpeg">
3898- <mets:FLocat LOCTYPE="URL"
3899- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN521089360/89/0/00000009.jpg"
3900- />
3901- </mets:file>
3902- </mets:fileGrp>
3903- <mets:fileGrp USE="DOWNLOAD">
3904- <mets:file ID="ex17__MONOGRAPH_DWL" MIMETYPE="application/pdf">
3905- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/monograph/pdf/00.pdf"
3906- />
3907- </mets:file>
3908- <mets:file ID="ex17__FILE00_DWL" MIMETYPE="application/pdf">
3909- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/01.pdf"
3910- />
3911- </mets:file>
3912- <mets:file ID="ex17__FILE01_DWL" MIMETYPE="application/pdf">
3913- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/02.pdf"
3914- />
3915- </mets:file>
3916- <mets:file ID="ex17__FILE02_DWL" MIMETYPE="application/pdf">
3917- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/03.pdf"
3918- />
3919- </mets:file>
3920- <mets:file ID="ex17__FILE03_DWL" MIMETYPE="application/pdf">
3921- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/04.pdf"
3922- />
3923- </mets:file>
3924- <mets:file ID="ex17__FILE04_DWL" MIMETYPE="application/pdf">
3925- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/05.pdf"
3926- />
3927- </mets:file>
3928- <mets:file ID="ex17__FILE05_DWL" MIMETYPE="application/pdf">
3929- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/06.pdf"
3930- />
3931- </mets:file>
3932- <mets:file ID="ex17__FILE06_DWL" MIMETYPE="application/pdf">
3933- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/07.pdf"
3934- />
3935- </mets:file>
3936- <mets:file ID="ex17__FILE07_DWL" MIMETYPE="application/pdf">
3937- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/08.pdf"
3938- />
3939- </mets:file>
3940- <mets:file ID="ex17__FILE08_DWL" MIMETYPE="application/pdf">
3941- <mets:FLocat LOCTYPE="URL" xlink:href="http://url/to/single/page/pdf/09.pdf"
3942- />
3943- </mets:file>
3944- </mets:fileGrp>
3945- </mets:fileSec>
3946- <mets:structMap TYPE="LOGICAL">
3947- <mets:div ADMID="ex17__AMD_00" DMDID="ex17__DMDLOG_00" ID="ex17__LOG_0000"
3948- TYPE="Monograph">
3949- <mets:fptr FILEID="ex17__FILE00_DWL" />
3950- </mets:div>
3951- </mets:structMap>
3952- <mets:structMap TYPE="PHYSICAL">
3953- <mets:div ID="ex17__PHYS_00" TYPE="physSequence">
3954- <mets:div ID="ex17__PHYS_01" ORDER="1" ORDERLABEL="1" TYPE="page">
3955- <mets:fptr FILEID="ex17__FILE00_DEF" />
3956- <mets:fptr FILEID="ex17__FILE00_MIN" />
3957- <mets:fptr FILEID="ex17__FILE00_MAX" />
3958- <mets:fptr FILEID="ex17__FILE00_THB" />
3959- <mets:fptr FILEID="ex17__FILE00_DWL" />
3960- </mets:div>
3961- <mets:div ID="ex17__PHYS_02" ORDER="2" ORDERLABEL="2" TYPE="page">
3962- <mets:fptr FILEID="ex17__FILE01_DEF" />
3963- <mets:fptr FILEID="ex17__FILE01_MIN" />
3964- <mets:fptr FILEID="ex17__FILE01_MAX" />
3965- <mets:fptr FILEID="ex17__FILE01_THB" />
3966- <mets:fptr FILEID="ex17__FILE01_DWL" />
3967- </mets:div>
3968- <mets:div ID="ex17__PHYS_03" ORDER="3" ORDERLABEL="3" TYPE="page">
3969- <mets:fptr FILEID="ex17__FILE02_DEF" />
3970- <mets:fptr FILEID="ex17__FILE02_MIN" />
3971- <mets:fptr FILEID="ex17__FILE02_MAX" />
3972- <mets:fptr FILEID="ex17__FILE02_THB" />
3973- <mets:fptr FILEID="ex17__FILE02_DWL" />
3974- </mets:div>
3975- <mets:div ID="ex17__PHYS_04" ORDER="4" ORDERLABEL="4" TYPE="page">
3976- <mets:fptr FILEID="ex17__FILE03_DEF" />
3977- <mets:fptr FILEID="ex17__FILE03_MIN" />
3978- <mets:fptr FILEID="ex17__FILE03_MAX" />
3979- <mets:fptr FILEID="ex17__FILE03_THB" />
3980- <mets:fptr FILEID="ex17__FILE03_DWL" />
3981- </mets:div>
3982- <mets:div ID="ex17__PHYS_05" ORDER="5" ORDERLABEL="5" TYPE="page">
3983- <mets:fptr FILEID="ex17__FILE04_DEF" />
3984- <mets:fptr FILEID="ex17__FILE04_MIN" />
3985- <mets:fptr FILEID="ex17__FILE04_MAX" />
3986- <mets:fptr FILEID="ex17__FILE04_THB" />
3987- <mets:fptr FILEID="ex17__FILE04_DWL" />
3988- </mets:div>
3989- <mets:div ID="ex17__PHYS_06" ORDER="6" ORDERLABEL="6" TYPE="page">
3990- <mets:fptr FILEID="ex17__FILE05_DEF" />
3991- <mets:fptr FILEID="ex17__FILE05_MIN" />
3992- <mets:fptr FILEID="ex17__FILE05_MAX" />
3993- <mets:fptr FILEID="ex17__FILE05_THB" />
3994- <mets:fptr FILEID="ex17__FILE05_DWL" />
3995- </mets:div>
3996- <mets:div ID="ex17__PHYS_07" ORDER="7" ORDERLABEL="7" TYPE="page">
3997- <mets:fptr FILEID="ex17__FILE06_DEF" />
3998- <mets:fptr FILEID="ex17__FILE06_MIN" />
3999- <mets:fptr FILEID="ex17__FILE06_MAX" />
4000- <mets:fptr FILEID="ex17__FILE06_THB" />
4001- <mets:fptr FILEID="ex17__FILE06_DWL" />
4002- </mets:div>
4003- <mets:div ID="ex17__PHYS_08" ORDER="8" ORDERLABEL="8" TYPE="page">
4004- <mets:fptr FILEID="ex17__FILE07_DEF" />
4005- <mets:fptr FILEID="ex17__FILE07_MIN" />
4006- <mets:fptr FILEID="ex17__FILE07_MAX" />
4007- <mets:fptr FILEID="ex17__FILE07_THB" />
4008- <mets:fptr FILEID="ex17__FILE07_DWL" />
4009- </mets:div>
4010- <mets:div ID="ex17__PHYS_09" ORDER="9" ORDERLABEL="9" TYPE="page">
4011- <mets:fptr FILEID="ex17__FILE08_DEF" />
4012- <mets:fptr FILEID="ex17__FILE08_MIN" />
4013- <mets:fptr FILEID="ex17__FILE08_MAX" />
4014- <mets:fptr FILEID="ex17__FILE08_THB" />
4015- <mets:fptr FILEID="ex17__FILE08_DWL" />
4016- </mets:div>
4017- </mets:div>
4018- </mets:structMap>
4019- <mets:structLink>
4020- <mets:smLink xlink:from="ex17__LOG_00" xlink:to="ex17__PHYS_00" />
4021- </mets:structLink>
4022- </mets:mets>
4023-
4024- </Appendix>
4025-
4026- <!--
4027- ===========================================================================
4028- == Beispiel Nr.18: Komplettes METS-Beispiel des Komplexen
4029- == Dokumentenmodells - übergeordnes Werk (Periodical)
4030- =========================================================================== -->
4031-
4032- <Appendix ID="example18"
4033- LABEL="Komplettes METS-Beispiel des Komplexen Dokumentenmodells - übergeordnes Werk (Periodical)"
4034- NUMBER="18">
4035-
4036- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
4037- <mets:dmdSec ID="ex18__DMD_00">
4038- <mets:mdWrap MDTYPE="MODS">
4039- <mets:xmlData>
4040- <mods:mods>
4041- <mods:identifier type="PPN">PPN394930762</mods:identifier>
4042- <mods:recordInfo>
4043- <mods:recordIdentifier source="GBV-PPN"
4044- >PPN394930762</mods:recordIdentifier>
4045- </mods:recordInfo>
4046- <mods:titleInfo>
4047- <mods:title>Algebra i Logika</mods:title>
4048- </mods:titleInfo>
4049- <mods:originInfo>
4050- <mods:place>
4051- <mods:placeTerm type="text">Novosibirsk</mods:placeTerm>
4052- </mods:place>
4053- <mods:publisher>Akademija Nauk SSSR, Sibirskoe Otdelenie, Institut
4054- Matematiki</mods:publisher>
4055- </mods:originInfo>
4056- </mods:mods>
4057- </mets:xmlData>
4058- </mets:mdWrap>
4059- </mets:dmdSec>
4060- <mets:amdSec ID="ex18__AMD_00">
4061- <mets:rightsMD ID="RIGHTS">
4062- <mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVRIGHTS">
4063- <mets:xmlData>
4064- <dv:rights xmlns:dv="http://dfg-viewer.de/">
4065- <dv:owner>Digitalisierungszentrum der Niedersächsischen Staats- und
4066- Universitätsbibliothek Göttingen</dv:owner>
4067- <dv:ownerLogo>http://gdz.sub.uni-goettingen.de/logo_gdz_dfgv.png</dv:ownerLogo>
4068- <dv:ownerSiteURL>http://gdz.sub.uni-goettingen.de</dv:ownerSiteURL>
4069- </dv:rights>
4070- </mets:xmlData>
4071- </mets:mdWrap>
4072- </mets:rightsMD>
4073- <mets:digiprovMD ID="DIGIPROV">
4074- <mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVLINKS">
4075- <mets:xmlData>
4076- <dv:links xmlns:dv="http://dfg-viewer.de/">
4077- <dv:reference>http://opac.sub.uni-goettingen.de/DB=1/PPN?PPN=394930762</dv:reference>
4078- <dv:presentation>http://resolver.sub.uni-goettingen.de/purl?PPN394930762_0001</dv:presentation>
4079- </dv:links>
4080- </mets:xmlData>
4081- </mets:mdWrap>
4082- </mets:digiprovMD>
4083- </mets:amdSec>
4084- <mets:structMap TYPE="LOGICAL">
4085- <mets:div ADMID="ex18__AMD_00" DMDID="ex18__DMD_00" ID="ex18__LOG_00"
4086- TYPE="Periodical">
4087- <mets:div TYPE="PeriodicalVolume">
4088- <mets:mptr LOCTYPE="URL"
4089- xlink:href="http://link/to/mets/file/1st/volume/mets.xml" />
4090- </mets:div>
4091- </mets:div>
4092- </mets:structMap>
4093- </mets:mets>
4094-
4095- </Appendix>
4096-
4097- <!--
4098- ===========================================================================
4099- == Beispiel Nr.19: Komplettes METS-Beispiel des Komplexen
4100- == Dokumentenmodells - nachfolgendes Werk (PeriodicalVolume)
4101- =========================================================================== -->
4102-
4103- <Appendix ID="example19"
4104- LABEL="Komplettes METS-Beispiel des Komplexen Dokumentenmodells - nachfolgendes Werk (PeriodicalVolume)"
4105- NUMBER="19">
4106-
4107- <mets:mets xmlns:xlink="http://www.w3.org/1999/xlink">
4108- <mets:dmdSec ID="ex19__DMD_01">
4109- <mets:mdWrap MDTYPE="MODS">
4110- <mets:xmlData>
4111- <mods:mods>
4112- <mods:identifier type="GBV-PPN">PPN394930762_0001</mods:identifier>
4113- <mods:recordInfo>
4114- <mods:recordIdentifier source="GBV-PPN"
4115- >PPN394930762_0001</mods:recordIdentifier>
4116- </mods:recordInfo>
4117- <mods:titleInfo>
4118- <mods:title>Algebra i Logika</mods:title>
4119- </mods:titleInfo>
4120- <mods:originInfo>
4121- <mods:place>
4122- <mods:placeTerm type="text">Novosibirsk</mods:placeTerm>
4123- </mods:place>
4124- <mods:dateIssued encoding="w3cdtf">1962</mods:dateIssued>
4125- <mods:publisher>Akademija Nauk SSSR, Sibirskoe Otdelenie, Institut
4126- Matematiki</mods:publisher>
4127- </mods:originInfo>
4128- <mods:relatedItem type="host">
4129- <mods:recordInfo>
4130- <mods:recordIdentifier source="GBV-PPN"
4131- >PPN394930762</mods:recordIdentifier>
4132- </mods:recordInfo>
4133- </mods:relatedItem>
4134- <mods:part order="1">
4135- <mods:detail type="volume">
4136- <mods:number>1</mods:number>
4137- </mods:detail>
4138- </mods:part>
4139- </mods:mods>
4140- </mets:xmlData>
4141- </mets:mdWrap>
4142- </mets:dmdSec>
4143- <mets:dmdSec ID="ex19__DMD_02">
4144- <mets:mdWrap MDTYPE="MODS">
4145- <mets:xmlData>
4146- <mods:mods>
4147- <mods:part order="10">
4148- <mods:detail type="issue">
4149- <mods:number>1</mods:number>
4150- </mods:detail>
4151- </mods:part>
4152- </mods:mods>
4153- </mets:xmlData>
4154- </mets:mdWrap>
4155- </mets:dmdSec>
4156- <mets:dmdSec ID="ex19__DMD_03">
4157- <mets:mdWrap MDTYPE="MODS">
4158- <mets:xmlData>
4159- <mods:mods>
4160- <mods:identifier type="Zbl">0146.03601</mods:identifier>
4161- <mods:titleInfo>
4162- <mods:title>$π$-пополнения локально нильпотентных групп</mods:title>
4163- </mods:titleInfo>
4164- <mods:language>
4165- <mods:languageTerm authority="rfc3066" type="code"
4166- >ru</mods:languageTerm>
4167- </mods:language>
4168- <mods:name>
4169- <mods:role>
4170- <mods:roleTerm>aut</mods:roleTerm>
4171- </mods:role>
4172- <mods:namePart type="family">Каргаполов</mods:namePart>
4173- <mods:namePart type="given">М.И.</mods:namePart>
4174- </mods:name>
4175- </mods:mods>
4176- </mets:xmlData>
4177- </mets:mdWrap>
4178- </mets:dmdSec>
4179- <mets:dmdSec ID="ex19__DMD_04">
4180- <mets:mdWrap MDTYPE="MODS">
4181- <mets:xmlData>
4182- <mods:mods>
4183- <mods:identifier type="Zbl">0145.25803</mods:identifier>
4184- <mods:titleInfo>
4185- <mods:title>базах свободной алгебры Ли</mods:title>
4186- </mods:titleInfo>
4187- <mods:language>
4188- <mods:languageTerm authority="rfc3066" type="code"
4189- >ru</mods:languageTerm>
4190- </mods:language>
4191- <mods:name>
4192- <mods:role>
4193- <mods:roleTerm>aut</mods:roleTerm>
4194- </mods:role>
4195- <mods:namePart type="family">Ширшов</mods:namePart>
4196- <mods:namePart type="given">А.И.</mods:namePart>
4197- </mods:name>
4198- </mods:mods>
4199- </mets:xmlData>
4200- </mets:mdWrap>
4201- </mets:dmdSec>
4202- <mets:dmdSec ID="ex19__DMD_05">
4203- <mets:mdWrap MDTYPE="MODS">
4204- <mets:xmlData>
4205- <mods:mods>
4206- <mods:part order="20">
4207- <mods:detail type="issue">
4208- <mods:number>2</mods:number>
4209- </mods:detail>
4210- </mods:part>
4211- </mods:mods>
4212- </mets:xmlData>
4213- </mets:mdWrap>
4214- </mets:dmdSec>
4215- <mets:dmdSec ID="ex19__DMD_06">
4216- <mets:mdWrap MDTYPE="MODS">
4217- <mets:xmlData>
4218- <mods:mods>
4219- <mods:identifier type="Zbl">0171.29103</mods:identifier>
4220- <mods:titleInfo>
4221- <mods:title>частично упорядоченных нильпотентных
4222- группах</mods:title>
4223- </mods:titleInfo>
4224- <mods:language>
4225- <mods:languageTerm authority="rfc3066" type="code"
4226- >ru</mods:languageTerm>
4227- </mods:language>
4228- <mods:name>
4229- <mods:role>
4230- <mods:roleTerm>aut</mods:roleTerm>
4231- </mods:role>
4232- <mods:namePart type="family">Мальцев</mods:namePart>
4233- <mods:namePart type="given">А.И.</mods:namePart>
4234- </mods:name>
4235- </mods:mods>
4236- </mets:xmlData>
4237- </mets:mdWrap>
4238- </mets:dmdSec>
4239- <mets:dmdSec ID="ex19__DMD_07">
4240- <mets:mdWrap MDTYPE="MODS">
4241- <mets:xmlData>
4242- <mods:mods>
4243- <mods:identifier type="Zbl">0228.06008</mods:identifier>
4244- <mods:titleInfo>
4245- <mods:title>Структура локально разрешимых вполне доупорядочиваемых
4246- групп</mods:title>
4247- </mods:titleInfo>
4248- <mods:language>
4249- <mods:languageTerm authority="rfc3066" type="code"
4250- >ru</mods:languageTerm>
4251- </mods:language>
4252- <mods:name>
4253- <mods:role>
4254- <mods:roleTerm>aut</mods:roleTerm>
4255- </mods:role>
4256- <mods:namePart type="family">Терехов</mods:namePart>
4257- <mods:namePart type="given">А.А.</mods:namePart>
4258- </mods:name>
4259- </mods:mods>
4260- </mets:xmlData>
4261- </mets:mdWrap>
4262- </mets:dmdSec>
4263- <mets:dmdSec ID="ex19__DMD_08">
4264- <mets:mdWrap MDTYPE="MODS">
4265- <mets:xmlData>
4266- <mods:mods>
4267- <mods:titleInfo>
4268- <mods:title>Вполне доупорядочиваемые группы</mods:title>
4269- </mods:titleInfo>
4270- <mods:language>
4271- <mods:languageTerm authority="rfc3066" type="code"
4272- >ru</mods:languageTerm>
4273- </mods:language>
4274- <mods:name>
4275- <mods:role>
4276- <mods:roleTerm>aut</mods:roleTerm>
4277- </mods:role>
4278- <mods:namePart type="family">Каргаполов</mods:namePart>
4279- <mods:namePart type="given">М.И.</mods:namePart>
4280- </mods:name>
4281- </mods:mods>
4282- </mets:xmlData>
4283- </mets:mdWrap>
4284- </mets:dmdSec>
4285- <mets:dmdSec ID="ex19__DMD_09">
4286- <mets:mdWrap MDTYPE="MODS">
4287- <mets:xmlData>
4288- <mods:mods>
4289- <mods:identifier type="Zbl">0152.01304</mods:identifier>
4290- <mods:titleInfo>
4291- <mods:title>Замечания по теории частично упорядоченных групп и
4292- полугрупп</mods:title>
4293- </mods:titleInfo>
4294- <mods:language>
4295- <mods:languageTerm authority="rfc3066" type="code"
4296- >ru</mods:languageTerm>
4297- </mods:language>
4298- <mods:name>
4299- <mods:role>
4300- <mods:roleTerm>aut</mods:roleTerm>
4301- </mods:role>
4302- <mods:namePart type="family">Виноградов</mods:namePart>
4303- <mods:namePart type="given">А.А.</mods:namePart>
4304- </mods:name>
4305- </mods:mods>
4306- </mets:xmlData>
4307- </mets:mdWrap>
4308- </mets:dmdSec>
4309- <mets:dmdSec ID="ex19__DMD_10">
4310- <mets:mdWrap MDTYPE="MODS">
4311- <mets:xmlData>
4312- <mods:mods>
4313- <mods:identifier type="Zbl">0163.28102</mods:identifier>
4314- <mods:titleInfo>
4315- <mods:title>тносительно элементарные подпространства в компактных
4316- алгебрах Ли</mods:title>
4317- </mods:titleInfo>
4318- <mods:language>
4319- <mods:languageTerm authority="rfc3066" type="code"
4320- >ru</mods:languageTerm>
4321- </mods:language>
4322- <mods:name>
4323- <mods:role>
4324- <mods:roleTerm>aut</mods:roleTerm>
4325- </mods:role>
4326- <mods:namePart type="family">Тайцлин</mods:namePart>
4327- <mods:namePart type="given">М.А.</mods:namePart>
4328- </mods:name>
4329- </mods:mods>
4330- </mets:xmlData>
4331- </mets:mdWrap>
4332- </mets:dmdSec>
4333- <mets:dmdSec ID="ex19__DMD_11">
4334- <mets:mdWrap MDTYPE="MODS">
4335- <mets:xmlData>
4336- <mods:mods>
4337- <mods:identifier type="Zbl">0156.03902</mods:identifier>
4338- <mods:titleInfo>
4339- <mods:title>Вложение алгебр Ли в алгебраически замкнутые алгебры
4340- Ли</mods:title>
4341- </mods:titleInfo>
4342- <mods:language>
4343- <mods:languageTerm authority="rfc3066" type="code"
4344- >ru</mods:languageTerm>
4345- </mods:language>
4346- <mods:name>
4347- <mods:role>
4348- <mods:roleTerm>aut</mods:roleTerm>
4349- </mods:role>
4350- <mods:namePart type="family">Бокуть</mods:namePart>
4351- <mods:namePart type="given">Л.А.</mods:namePart>
4352- </mods:name>
4353- </mods:mods>
4354- </mets:xmlData>
4355- </mets:mdWrap>
4356- </mets:dmdSec>
4357- <mets:amdSec ID="ex19__AMD_00">
4358- <mets:rightsMD ID="ex19__RIGHTS_00">
4359- <mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVRIGHTS">
4360- <mets:xmlData>
4361- <dv:rights xmlns:dv="http://dfg-viewer.de/">
4362- <dv:owner>Digitalisierungszentrum der Niedersächsischen Staats- und
4363- Universitätsbibliothek Göttingen</dv:owner>
4364- <dv:ownerLogo>http://gdz.sub.uni-goettingen.de/logo_gdz_dfgv.png</dv:ownerLogo>
4365- <dv:ownerSiteURL>http://gdz.sub.uni-goettingen.de</dv:ownerSiteURL>
4366- </dv:rights>
4367- </mets:xmlData>
4368- </mets:mdWrap>
4369- </mets:rightsMD>
4370- <mets:digiprovMD ID="ex19__DIGIPROV_00">
4371- <mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVLINKS">
4372- <mets:xmlData>
4373- <dv:links xmlns:dv="http://dfg-viewer.de/">
4374- <dv:reference>http://opac.sub.uni-goettingen.de/DB=1/PPN?PPN=394930762</dv:reference>
4375- <dv:presentation>http://resolver.sub.uni-goettingen.de/purl?PPN394930762_0001</dv:presentation>
4376- </dv:links>
4377- </mets:xmlData>
4378- </mets:mdWrap>
4379- </mets:digiprovMD>
4380- </mets:amdSec>
4381- <mets:fileSec>
4382- <mets:fileGrp USE="DEFAULT">
4383- <mets:file ID="ex19__FILE00_DEF" MIMETYPE="image/jpeg">
4384- <mets:FLocat LOCTYPE="URL"
4385- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000001.jpg"
4386- />
4387- </mets:file>
4388- <mets:file ID="ex19__FILE01_DEF" MIMETYPE="image/jpeg">
4389- <mets:FLocat LOCTYPE="URL"
4390- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000002.jpg"
4391- />
4392- </mets:file>
4393- <mets:file ID="ex19__FILE02_DEF" MIMETYPE="image/jpeg">
4394- <mets:FLocat LOCTYPE="URL"
4395- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000003.jpg"
4396- />
4397- </mets:file>
4398- <mets:file ID="ex19__FILE03_DEF" MIMETYPE="image/jpeg">
4399- <mets:FLocat LOCTYPE="URL"
4400- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000004.jpg"
4401- />
4402- </mets:file>
4403- <mets:file ID="ex19__FILE04_DEF" MIMETYPE="image/jpeg">
4404- <mets:FLocat LOCTYPE="URL"
4405- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000005.jpg"
4406- />
4407- </mets:file>
4408- <mets:file ID="ex19__FILE05_DEF" MIMETYPE="image/jpeg">
4409- <mets:FLocat LOCTYPE="URL"
4410- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000006.jpg"
4411- />
4412- </mets:file>
4413- <mets:file ID="ex19__FILE06_DEF" MIMETYPE="image/jpeg">
4414- <mets:FLocat LOCTYPE="URL"
4415- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000007.jpg"
4416- />
4417- </mets:file>
4418- <mets:file ID="ex19__FILE07_DEF" MIMETYPE="image/jpeg">
4419- <mets:FLocat LOCTYPE="URL"
4420- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000008.jpg"
4421- />
4422- </mets:file>
4423- <mets:file ID="ex19__FILE08_DEF" MIMETYPE="image/jpeg">
4424- <mets:FLocat LOCTYPE="URL"
4425- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000009.jpg"
4426- />
4427- </mets:file>
4428- <mets:file ID="ex19__FILE09_DEF" MIMETYPE="image/jpeg">
4429- <mets:FLocat LOCTYPE="URL"
4430- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000010.jpg"
4431- />
4432- </mets:file>
4433- <mets:file ID="ex19__FILE10_DEF" MIMETYPE="image/jpeg">
4434- <mets:FLocat LOCTYPE="URL"
4435- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000011.jpg"
4436- />
4437- </mets:file>
4438- <mets:file ID="ex19__FILE11_DEF" MIMETYPE="image/jpeg">
4439- <mets:FLocat LOCTYPE="URL"
4440- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000012.jpg"
4441- />
4442- </mets:file>
4443- <mets:file ID="ex19__FILE12_DEF" MIMETYPE="image/jpeg">
4444- <mets:FLocat LOCTYPE="URL"
4445- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000013.jpg"
4446- />
4447- </mets:file>
4448- <mets:file ID="ex19__FILE13_DEF" MIMETYPE="image/jpeg">
4449- <mets:FLocat LOCTYPE="URL"
4450- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000014.jpg"
4451- />
4452- </mets:file>
4453- <mets:file ID="ex19__FILE14_DEF" MIMETYPE="image/jpeg">
4454- <mets:FLocat LOCTYPE="URL"
4455- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000015.jpg"
4456- />
4457- </mets:file>
4458- <mets:file ID="ex19__FILE15_DEF" MIMETYPE="image/jpeg">
4459- <mets:FLocat LOCTYPE="URL"
4460- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000016.jpg"
4461- />
4462- </mets:file>
4463- <mets:file ID="ex19__FILE16_DEF" MIMETYPE="image/jpeg">
4464- <mets:FLocat LOCTYPE="URL"
4465- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000017.jpg"
4466- />
4467- </mets:file>
4468- <mets:file ID="ex19__FILE17_DEF" MIMETYPE="image/jpeg">
4469- <mets:FLocat LOCTYPE="URL"
4470- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000018.jpg"
4471- />
4472- </mets:file>
4473- <mets:file ID="ex19__FILE18_DEF" MIMETYPE="image/jpeg">
4474- <mets:FLocat LOCTYPE="URL"
4475- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000019.jpg"
4476- />
4477- </mets:file>
4478- <mets:file ID="ex19__FILE19_DEF" MIMETYPE="image/jpeg">
4479- <mets:FLocat LOCTYPE="URL"
4480- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000020.jpg"
4481- />
4482- </mets:file>
4483- <mets:file ID="ex19__FILE20_DEF" MIMETYPE="image/jpeg">
4484- <mets:FLocat LOCTYPE="URL"
4485- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000021.jpg"
4486- />
4487- </mets:file>
4488- <mets:file ID="ex19__FILE21_DEF" MIMETYPE="image/jpeg">
4489- <mets:FLocat LOCTYPE="URL"
4490- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000022.jpg"
4491- />
4492- </mets:file>
4493- <mets:file ID="ex19__FILE22_DEF" MIMETYPE="image/jpeg">
4494- <mets:FLocat LOCTYPE="URL"
4495- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000023.jpg"
4496- />
4497- </mets:file>
4498- <mets:file ID="ex19__FILE23_DEF" MIMETYPE="image/jpeg">
4499- <mets:FLocat LOCTYPE="URL"
4500- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000024.jpg"
4501- />
4502- </mets:file>
4503- <mets:file ID="ex19__FILE24_DEF" MIMETYPE="image/jpeg">
4504- <mets:FLocat LOCTYPE="URL"
4505- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000025.jpg"
4506- />
4507- </mets:file>
4508- <mets:file ID="ex19__FILE25_DEF" MIMETYPE="image/jpeg">
4509- <mets:FLocat LOCTYPE="URL"
4510- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000026.jpg"
4511- />
4512- </mets:file>
4513- <mets:file ID="ex19__FILE26_DEF" MIMETYPE="image/jpeg">
4514- <mets:FLocat LOCTYPE="URL"
4515- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000027.jpg"
4516- />
4517- </mets:file>
4518- <mets:file ID="ex19__FILE27_DEF" MIMETYPE="image/jpeg">
4519- <mets:FLocat LOCTYPE="URL"
4520- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000028.jpg"
4521- />
4522- </mets:file>
4523- <mets:file ID="ex19__FILE28_DEF" MIMETYPE="image/jpeg">
4524- <mets:FLocat LOCTYPE="URL"
4525- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000029.jpg"
4526- />
4527- </mets:file>
4528- <mets:file ID="ex19__FILE29_DEF" MIMETYPE="image/jpeg">
4529- <mets:FLocat LOCTYPE="URL"
4530- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000030.jpg"
4531- />
4532- </mets:file>
4533- <mets:file ID="ex19__FILE30_DEF" MIMETYPE="image/jpeg">
4534- <mets:FLocat LOCTYPE="URL"
4535- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000031.jpg"
4536- />
4537- </mets:file>
4538- <mets:file ID="ex19__FILE31_DEF" MIMETYPE="image/jpeg">
4539- <mets:FLocat LOCTYPE="URL"
4540- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000032.jpg"
4541- />
4542- </mets:file>
4543- <mets:file ID="ex19__FILE32_DEF" MIMETYPE="image/jpeg">
4544- <mets:FLocat LOCTYPE="URL"
4545- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000033.jpg"
4546- />
4547- </mets:file>
4548- <mets:file ID="ex19__FILE33_DEF" MIMETYPE="image/jpeg">
4549- <mets:FLocat LOCTYPE="URL"
4550- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000034.jpg"
4551- />
4552- </mets:file>
4553- <mets:file ID="ex19__FILE34_DEF" MIMETYPE="image/jpeg">
4554- <mets:FLocat LOCTYPE="URL"
4555- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000035.jpg"
4556- />
4557- </mets:file>
4558- <mets:file ID="ex19__FILE35_DEF" MIMETYPE="image/jpeg">
4559- <mets:FLocat LOCTYPE="URL"
4560- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000036.jpg"
4561- />
4562- </mets:file>
4563- <mets:file ID="ex19__FILE36_DEF" MIMETYPE="image/jpeg">
4564- <mets:FLocat LOCTYPE="URL"
4565- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000037.jpg"
4566- />
4567- </mets:file>
4568- <mets:file ID="ex19__FILE37_DEF" MIMETYPE="image/jpeg">
4569- <mets:FLocat LOCTYPE="URL"
4570- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000038.jpg"
4571- />
4572- </mets:file>
4573- <mets:file ID="ex19__FILE38_DEF" MIMETYPE="image/jpeg">
4574- <mets:FLocat LOCTYPE="URL"
4575- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000039.jpg"
4576- />
4577- </mets:file>
4578- <mets:file ID="ex19__FILE39_DEF" MIMETYPE="image/jpeg">
4579- <mets:FLocat LOCTYPE="URL"
4580- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000040.jpg"
4581- />
4582- </mets:file>
4583- <mets:file ID="ex19__FILE40_DEF" MIMETYPE="image/jpeg">
4584- <mets:FLocat LOCTYPE="URL"
4585- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000041.jpg"
4586- />
4587- </mets:file>
4588- <mets:file ID="ex19__FILE41_DEF" MIMETYPE="image/jpeg">
4589- <mets:FLocat LOCTYPE="URL"
4590- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000042.jpg"
4591- />
4592- </mets:file>
4593- <mets:file ID="ex19__FILE42_DEF" MIMETYPE="image/jpeg">
4594- <mets:FLocat LOCTYPE="URL"
4595- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000043.jpg"
4596- />
4597- </mets:file>
4598- <mets:file ID="ex19__FILE43_DEF" MIMETYPE="image/jpeg">
4599- <mets:FLocat LOCTYPE="URL"
4600- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000044.jpg"
4601- />
4602- </mets:file>
4603- <mets:file ID="ex19__FILE44_DEF" MIMETYPE="image/jpeg">
4604- <mets:FLocat LOCTYPE="URL"
4605- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000045.jpg"
4606- />
4607- </mets:file>
4608- <mets:file ID="ex19__FILE45_DEF" MIMETYPE="image/jpeg">
4609- <mets:FLocat LOCTYPE="URL"
4610- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000046.jpg"
4611- />
4612- </mets:file>
4613- <mets:file ID="ex19__FILE46_DEF" MIMETYPE="image/jpeg">
4614- <mets:FLocat LOCTYPE="URL"
4615- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000047.jpg"
4616- />
4617- </mets:file>
4618- <mets:file ID="ex19__FILE47_DEF" MIMETYPE="image/jpeg">
4619- <mets:FLocat LOCTYPE="URL"
4620- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000048.jpg"
4621- />
4622- </mets:file>
4623- <mets:file ID="ex19__FILE48_DEF" MIMETYPE="image/jpeg">
4624- <mets:FLocat LOCTYPE="URL"
4625- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000049.jpg"
4626- />
4627- </mets:file>
4628- <mets:file ID="ex19__FILE49_DEF" MIMETYPE="image/jpeg">
4629- <mets:FLocat LOCTYPE="URL"
4630- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000050.jpg"
4631- />
4632- </mets:file>
4633- <mets:file ID="ex19__FILE50_DEF" MIMETYPE="image/jpeg">
4634- <mets:FLocat LOCTYPE="URL"
4635- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000051.jpg"
4636- />
4637- </mets:file>
4638- <mets:file ID="ex19__FILE51_DEF" MIMETYPE="image/jpeg">
4639- <mets:FLocat LOCTYPE="URL"
4640- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000052.jpg"
4641- />
4642- </mets:file>
4643- <mets:file ID="ex19__FILE52_DEF" MIMETYPE="image/jpeg">
4644- <mets:FLocat LOCTYPE="URL"
4645- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000053.jpg"
4646- />
4647- </mets:file>
4648- <mets:file ID="ex19__FILE53_DEF" MIMETYPE="image/jpeg">
4649- <mets:FLocat LOCTYPE="URL"
4650- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000054.jpg"
4651- />
4652- </mets:file>
4653- <mets:file ID="ex19__FILE54_DEF" MIMETYPE="image/jpeg">
4654- <mets:FLocat LOCTYPE="URL"
4655- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000055.jpg"
4656- />
4657- </mets:file>
4658- <mets:file ID="ex19__FILE55_DEF" MIMETYPE="image/jpeg">
4659- <mets:FLocat LOCTYPE="URL"
4660- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000056.jpg"
4661- />
4662- </mets:file>
4663- <mets:file ID="ex19__FILE56_DEF" MIMETYPE="image/jpeg">
4664- <mets:FLocat LOCTYPE="URL"
4665- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000057.jpg"
4666- />
4667- </mets:file>
4668- <mets:file ID="ex19__FILE57_DEF" MIMETYPE="image/jpeg">
4669- <mets:FLocat LOCTYPE="URL"
4670- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000058.jpg"
4671- />
4672- </mets:file>
4673- <mets:file ID="ex19__FILE58_DEF" MIMETYPE="image/jpeg">
4674- <mets:FLocat LOCTYPE="URL"
4675- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000059.jpg"
4676- />
4677- </mets:file>
4678- <mets:file ID="ex19__FILE59_DEF" MIMETYPE="image/jpeg">
4679- <mets:FLocat LOCTYPE="URL"
4680- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000060.jpg"
4681- />
4682- </mets:file>
4683- <mets:file ID="ex19__FILE60_DEF" MIMETYPE="image/jpeg">
4684- <mets:FLocat LOCTYPE="URL"
4685- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000061.jpg"
4686- />
4687- </mets:file>
4688- <mets:file ID="ex19__FILE61_DEF" MIMETYPE="image/jpeg">
4689- <mets:FLocat LOCTYPE="URL"
4690- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000062.jpg"
4691- />
4692- </mets:file>
4693- <mets:file ID="ex19__FILE62_DEF" MIMETYPE="image/jpeg">
4694- <mets:FLocat LOCTYPE="URL"
4695- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000063.jpg"
4696- />
4697- </mets:file>
4698- <mets:file ID="ex19__FILE63_DEF" MIMETYPE="image/jpeg">
4699- <mets:FLocat LOCTYPE="URL"
4700- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000064.jpg"
4701- />
4702- </mets:file>
4703- <mets:file ID="ex19__FILE64_DEF" MIMETYPE="image/jpeg">
4704- <mets:FLocat LOCTYPE="URL"
4705- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000065.jpg"
4706- />
4707- </mets:file>
4708- <mets:file ID="ex19__FILE65_DEF" MIMETYPE="image/jpeg">
4709- <mets:FLocat LOCTYPE="URL"
4710- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000066.jpg"
4711- />
4712- </mets:file>
4713- <mets:file ID="ex19__FILE66_DEF" MIMETYPE="image/jpeg">
4714- <mets:FLocat LOCTYPE="URL"
4715- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000067.jpg"
4716- />
4717- </mets:file>
4718- <mets:file ID="ex19__FILE67_DEF" MIMETYPE="image/jpeg">
4719- <mets:FLocat LOCTYPE="URL"
4720- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000068.jpg"
4721- />
4722- </mets:file>
4723- <mets:file ID="ex19__FILE68_DEF" MIMETYPE="image/jpeg">
4724- <mets:FLocat LOCTYPE="URL"
4725- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000069.jpg"
4726- />
4727- </mets:file>
4728- <mets:file ID="ex19__FILE69_DEF" MIMETYPE="image/jpeg">
4729- <mets:FLocat LOCTYPE="URL"
4730- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000070.jpg"
4731- />
4732- </mets:file>
4733- <mets:file ID="ex19__FILE70_DEF" MIMETYPE="image/jpeg">
4734- <mets:FLocat LOCTYPE="URL"
4735- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000071.jpg"
4736- />
4737- </mets:file>
4738- <mets:file ID="ex19__FILE71_DEF" MIMETYPE="image/jpeg">
4739- <mets:FLocat LOCTYPE="URL"
4740- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000072.jpg"
4741- />
4742- </mets:file>
4743- <mets:file ID="ex19__FILE72_DEF" MIMETYPE="image/jpeg">
4744- <mets:FLocat LOCTYPE="URL"
4745- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000073.jpg"
4746- />
4747- </mets:file>
4748- <mets:file ID="ex19__FILE73_DEF" MIMETYPE="image/jpeg">
4749- <mets:FLocat LOCTYPE="URL"
4750- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000074.jpg"
4751- />
4752- </mets:file>
4753- <mets:file ID="ex19__FILE74_DEF" MIMETYPE="image/jpeg">
4754- <mets:FLocat LOCTYPE="URL"
4755- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000075.jpg"
4756- />
4757- </mets:file>
4758- <mets:file ID="ex19__FILE75_DEF" MIMETYPE="image/jpeg">
4759- <mets:FLocat LOCTYPE="URL"
4760- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000076.jpg"
4761- />
4762- </mets:file>
4763- <mets:file ID="ex19__FILE76_DEF" MIMETYPE="image/jpeg">
4764- <mets:FLocat LOCTYPE="URL"
4765- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000077.jpg"
4766- />
4767- </mets:file>
4768- <mets:file ID="ex19__FILE77_DEF" MIMETYPE="image/jpeg">
4769- <mets:FLocat LOCTYPE="URL"
4770- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/800/0/00000078.jpg"
4771- />
4772- </mets:file>
4773- </mets:fileGrp>
4774- <mets:fileGrp USE="MAX">
4775- <mets:file ID="ex19__FILE00_MAX" MIMETYPE="image/jpeg">
4776- <mets:FLocat LOCTYPE="URL"
4777- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000001.jpg"
4778- />
4779- </mets:file>
4780- <mets:file ID="ex19__FILE01_MAX" MIMETYPE="image/jpeg">
4781- <mets:FLocat LOCTYPE="URL"
4782- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000002.jpg"
4783- />
4784- </mets:file>
4785- <mets:file ID="ex19__FILE02_MAX" MIMETYPE="image/jpeg">
4786- <mets:FLocat LOCTYPE="URL"
4787- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000003.jpg"
4788- />
4789- </mets:file>
4790- <mets:file ID="ex19__FILE03_MAX" MIMETYPE="image/jpeg">
4791- <mets:FLocat LOCTYPE="URL"
4792- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000004.jpg"
4793- />
4794- </mets:file>
4795- <mets:file ID="ex19__FILE04_MAX" MIMETYPE="image/jpeg">
4796- <mets:FLocat LOCTYPE="URL"
4797- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000005.jpg"
4798- />
4799- </mets:file>
4800- <mets:file ID="ex19__FILE05_MAX" MIMETYPE="image/jpeg">
4801- <mets:FLocat LOCTYPE="URL"
4802- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000006.jpg"
4803- />
4804- </mets:file>
4805- <mets:file ID="ex19__FILE06_MAX" MIMETYPE="image/jpeg">
4806- <mets:FLocat LOCTYPE="URL"
4807- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000007.jpg"
4808- />
4809- </mets:file>
4810- <mets:file ID="ex19__FILE07_MAX" MIMETYPE="image/jpeg">
4811- <mets:FLocat LOCTYPE="URL"
4812- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000008.jpg"
4813- />
4814- </mets:file>
4815- <mets:file ID="ex19__FILE08_MAX" MIMETYPE="image/jpeg">
4816- <mets:FLocat LOCTYPE="URL"
4817- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000009.jpg"
4818- />
4819- </mets:file>
4820- <mets:file ID="ex19__FILE09_MAX" MIMETYPE="image/jpeg">
4821- <mets:FLocat LOCTYPE="URL"
4822- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000010.jpg"
4823- />
4824- </mets:file>
4825- <mets:file ID="ex19__FILE10_MAX" MIMETYPE="image/jpeg">
4826- <mets:FLocat LOCTYPE="URL"
4827- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000011.jpg"
4828- />
4829- </mets:file>
4830- <mets:file ID="ex19__FILE11_MAX" MIMETYPE="image/jpeg">
4831- <mets:FLocat LOCTYPE="URL"
4832- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000012.jpg"
4833- />
4834- </mets:file>
4835- <mets:file ID="ex19__FILE12_MAX" MIMETYPE="image/jpeg">
4836- <mets:FLocat LOCTYPE="URL"
4837- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000013.jpg"
4838- />
4839- </mets:file>
4840- <mets:file ID="ex19__FILE13_MAX" MIMETYPE="image/jpeg">
4841- <mets:FLocat LOCTYPE="URL"
4842- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000014.jpg"
4843- />
4844- </mets:file>
4845- <mets:file ID="ex19__FILE14_MAX" MIMETYPE="image/jpeg">
4846- <mets:FLocat LOCTYPE="URL"
4847- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000015.jpg"
4848- />
4849- </mets:file>
4850- <mets:file ID="ex19__FILE15_MAX" MIMETYPE="image/jpeg">
4851- <mets:FLocat LOCTYPE="URL"
4852- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000016.jpg"
4853- />
4854- </mets:file>
4855- <mets:file ID="ex19__FILE16_MAX" MIMETYPE="image/jpeg">
4856- <mets:FLocat LOCTYPE="URL"
4857- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000017.jpg"
4858- />
4859- </mets:file>
4860- <mets:file ID="ex19__FILE17_MAX" MIMETYPE="image/jpeg">
4861- <mets:FLocat LOCTYPE="URL"
4862- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000018.jpg"
4863- />
4864- </mets:file>
4865- <mets:file ID="ex19__FILE18_MAX" MIMETYPE="image/jpeg">
4866- <mets:FLocat LOCTYPE="URL"
4867- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000019.jpg"
4868- />
4869- </mets:file>
4870- <mets:file ID="ex19__FILE19_MAX" MIMETYPE="image/jpeg">
4871- <mets:FLocat LOCTYPE="URL"
4872- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000020.jpg"
4873- />
4874- </mets:file>
4875- <mets:file ID="ex19__FILE20_MAX" MIMETYPE="image/jpeg">
4876- <mets:FLocat LOCTYPE="URL"
4877- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000021.jpg"
4878- />
4879- </mets:file>
4880- <mets:file ID="ex19__FILE21_MAX" MIMETYPE="image/jpeg">
4881- <mets:FLocat LOCTYPE="URL"
4882- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000022.jpg"
4883- />
4884- </mets:file>
4885- <mets:file ID="ex19__FILE22_MAX" MIMETYPE="image/jpeg">
4886- <mets:FLocat LOCTYPE="URL"
4887- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000023.jpg"
4888- />
4889- </mets:file>
4890- <mets:file ID="ex19__FILE23_MAX" MIMETYPE="image/jpeg">
4891- <mets:FLocat LOCTYPE="URL"
4892- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000024.jpg"
4893- />
4894- </mets:file>
4895- <mets:file ID="ex19__FILE24_MAX" MIMETYPE="image/jpeg">
4896- <mets:FLocat LOCTYPE="URL"
4897- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000025.jpg"
4898- />
4899- </mets:file>
4900- <mets:file ID="ex19__FILE25_MAX" MIMETYPE="image/jpeg">
4901- <mets:FLocat LOCTYPE="URL"
4902- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000026.jpg"
4903- />
4904- </mets:file>
4905- <mets:file ID="ex19__FILE26_MAX" MIMETYPE="image/jpeg">
4906- <mets:FLocat LOCTYPE="URL"
4907- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000027.jpg"
4908- />
4909- </mets:file>
4910- <mets:file ID="ex19__FILE27_MAX" MIMETYPE="image/jpeg">
4911- <mets:FLocat LOCTYPE="URL"
4912- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000028.jpg"
4913- />
4914- </mets:file>
4915- <mets:file ID="ex19__FILE28_MAX" MIMETYPE="image/jpeg">
4916- <mets:FLocat LOCTYPE="URL"
4917- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000029.jpg"
4918- />
4919- </mets:file>
4920- <mets:file ID="ex19__FILE29_MAX" MIMETYPE="image/jpeg">
4921- <mets:FLocat LOCTYPE="URL"
4922- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000030.jpg"
4923- />
4924- </mets:file>
4925- <mets:file ID="ex19__FILE30_MAX" MIMETYPE="image/jpeg">
4926- <mets:FLocat LOCTYPE="URL"
4927- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000031.jpg"
4928- />
4929- </mets:file>
4930- <mets:file ID="ex19__FILE31_MAX" MIMETYPE="image/jpeg">
4931- <mets:FLocat LOCTYPE="URL"
4932- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000032.jpg"
4933- />
4934- </mets:file>
4935- <mets:file ID="ex19__FILE32_MAX" MIMETYPE="image/jpeg">
4936- <mets:FLocat LOCTYPE="URL"
4937- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000033.jpg"
4938- />
4939- </mets:file>
4940- <mets:file ID="ex19__FILE33_MAX" MIMETYPE="image/jpeg">
4941- <mets:FLocat LOCTYPE="URL"
4942- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000034.jpg"
4943- />
4944- </mets:file>
4945- <mets:file ID="ex19__FILE34_MAX" MIMETYPE="image/jpeg">
4946- <mets:FLocat LOCTYPE="URL"
4947- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000035.jpg"
4948- />
4949- </mets:file>
4950- <mets:file ID="ex19__FILE35_MAX" MIMETYPE="image/jpeg">
4951- <mets:FLocat LOCTYPE="URL"
4952- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000036.jpg"
4953- />
4954- </mets:file>
4955- <mets:file ID="ex19__FILE36_MAX" MIMETYPE="image/jpeg">
4956- <mets:FLocat LOCTYPE="URL"
4957- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000037.jpg"
4958- />
4959- </mets:file>
4960- <mets:file ID="ex19__FILE37_MAX" MIMETYPE="image/jpeg">
4961- <mets:FLocat LOCTYPE="URL"
4962- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000038.jpg"
4963- />
4964- </mets:file>
4965- <mets:file ID="ex19__FILE38_MAX" MIMETYPE="image/jpeg">
4966- <mets:FLocat LOCTYPE="URL"
4967- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000039.jpg"
4968- />
4969- </mets:file>
4970- <mets:file ID="ex19__FILE39_MAX" MIMETYPE="image/jpeg">
4971- <mets:FLocat LOCTYPE="URL"
4972- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000040.jpg"
4973- />
4974- </mets:file>
4975- <mets:file ID="ex19__FILE40_MAX" MIMETYPE="image/jpeg">
4976- <mets:FLocat LOCTYPE="URL"
4977- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000041.jpg"
4978- />
4979- </mets:file>
4980- <mets:file ID="ex19__FILE41_MAX" MIMETYPE="image/jpeg">
4981- <mets:FLocat LOCTYPE="URL"
4982- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000042.jpg"
4983- />
4984- </mets:file>
4985- <mets:file ID="ex19__FILE42_MAX" MIMETYPE="image/jpeg">
4986- <mets:FLocat LOCTYPE="URL"
4987- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000043.jpg"
4988- />
4989- </mets:file>
4990- <mets:file ID="ex19__FILE43_MAX" MIMETYPE="image/jpeg">
4991- <mets:FLocat LOCTYPE="URL"
4992- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000044.jpg"
4993- />
4994- </mets:file>
4995- <mets:file ID="ex19__FILE44_MAX" MIMETYPE="image/jpeg">
4996- <mets:FLocat LOCTYPE="URL"
4997- xlink:href="http://gdz-srv1.sub.uni-goettingen.de/content/PPN394930762_0001/1000/0/00000045.jpg"
4998- />
4999- </mets:file>
5000- <mets:file ID="ex19__FILE45_MAX" MIMETYPE="image/jpeg">
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: