CINXE.COM
Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML? — digiversity
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://gmpg.org/xfn/11"><script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://digiversity.net/2013/tutorial-wie-baue-ich-ein-oxygen-xml-framework/","20210120073928","https://web.archive.org/","web","https://web-static.archive.org/_static/", "1611128368"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title> Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML? — digiversity </title> <meta name="generator" content="WordPress 4.9.16"/> <!-- leave this for stats please --> <link rel="Shortcut Icon" href="https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/themes/digiversity-theme/images/favicon.ico" type="image/x-icon"/> <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="https://web.archive.org/web/20210120073928/https://digiversity.net/feed/"/> <link rel="alternate" type="text/xml" title="RSS .92" href="https://web.archive.org/web/20210120073928/https://digiversity.net/feed/rss/"/> <link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="https://web.archive.org/web/20210120073928/https://digiversity.net/feed/atom/"/> <link rel="pingback" href="https://digiversity.net/xmlrpc.php"/> <link rel="archives" title="Oktober 2015" href="https://digiversity.net/2015/10/"/> <link rel="archives" title="Dezember 2013" href="https://digiversity.net/2013/12/"/> <link rel="archives" title="Oktober 2013" href="https://digiversity.net/2013/10/"/> <link rel="archives" title="Juni 2013" href="https://digiversity.net/2013/06/"/> <link rel="archives" title="November 2012" href="https://digiversity.net/2012/11/"/> <link rel="archives" title="Oktober 2012" href="https://digiversity.net/2012/10/"/> <link rel="archives" title="April 2012" href="https://digiversity.net/2012/04/"/> <link rel="archives" title="Februar 2012" href="https://digiversity.net/2012/02/"/> <link rel="archives" title="Dezember 2011" href="https://digiversity.net/2011/12/"/> <link rel="archives" title="Juli 2011" href="https://digiversity.net/2011/07/"/> <link rel="archives" title="Juni 2011" href="https://digiversity.net/2011/06/"/> <link rel="archives" title="April 2011" href="https://digiversity.net/2011/04/"/> <link rel="archives" title="März 2011" href="https://digiversity.net/2011/03/"/> <link rel="archives" title="September 2010" href="https://digiversity.net/2010/09/"/> <link rel="archives" title="Juli 2010" href="https://digiversity.net/2010/07/"/> <link rel="archives" title="Juni 2010" href="https://digiversity.net/2010/06/"/> <link rel="archives" title="Mai 2010" href="https://digiversity.net/2010/05/"/> <link rel="archives" title="April 2010" href="https://digiversity.net/2010/04/"/> <link rel="archives" title="März 2010" href="https://digiversity.net/2010/03/"/> <link rel="archives" title="Februar 2010" href="https://digiversity.net/2010/02/"/> <link rel="archives" title="Januar 2010" href="https://digiversity.net/2010/01/"/> <link rel="archives" title="Dezember 2009" href="https://digiversity.net/2009/12/"/> <link rel="archives" title="November 2009" href="https://digiversity.net/2009/11/"/> <!-- BEGIN Metadata added by the Add-Meta-Tags WordPress plugin --> <meta name="robots" content="index,follow"/> <meta name="distribution" content="global"/> <meta name="language" content="de"/> <meta name="google-site-verification" content="4yRvG24yWyqeTedJ5OT_3WvAIogPGZ8Zx6cUPe43oDs"/> <meta name="description" content="Das Tutorial gibt einen Überblick darüber, wie man in Oxygen XML eigene Frameworks (sog. Dokumenttypzuordnungen) erstellen kann."/> <meta name="keywords" content="oxygen xml, framework, dokumenttypzuordnung, ediarum, telota"/> <!-- END Metadata added by the Add-Meta-Tags WordPress plugin --> <link rel="dns-prefetch" href="//web.archive.org/web/20210120073928/https://s.w.org/"/> <link rel="alternate" type="application/rss+xml" title="digiversity » Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML? Kommentar-Feed" href="https://web.archive.org/web/20210120073928/https://digiversity.net/2013/tutorial-wie-baue-ich-ein-oxygen-xml-framework/feed/"/> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/web.archive.org\/web\/20210120073928\/https:\/\/s.w.org\/images\/core\/emoji\/11\/72x72\/","ext":".png","svgUrl":"https:\/\/web.archive.org\/web\/20210120073928\/https:\/\/s.w.org\/images\/core\/emoji\/11\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/web.archive.org\/web\/20210120073928\/https:\/\/digiversity.net\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.9.16"}}; !function(a,b,c){function d(a,b){var c=String.fromCharCode;l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,a),0,0);var d=k.toDataURL();l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,b),0,0);var e=k.toDataURL();return d===e}function e(a){var b;if(!l||!l.fillText)return!1;switch(l.textBaseline="top",l.font="600 32px Arial",a){case"flag":return!(b=d([55356,56826,55356,56819],[55356,56826,8203,55356,56819]))&&(b=d([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]),!b);case"emoji":return b=d([55358,56760,9792,65039],[55358,56760,8203,9792,65039]),!b}return!1}function f(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var g,h,i,j,k=b.createElement("canvas"),l=k.getContext&&k.getContext("2d");for(j=Array("flag","emoji"),c.supports={everything:!0,everythingExceptFlag:!0},i=0;i<j.length;i++)c.supports[j[i]]=e(j[i]),c.supports.everything=c.supports.everything&&c.supports[j[i]],"flag"!==j[i]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[j[i]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(h=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",h,!1),a.addEventListener("load",h,!1)):(a.attachEvent("onload",h),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),g=c.source||{},g.concatemoji?f(g.concatemoji):g.wpemoji&&g.twemoji&&(f(g.twemoji),f(g.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel="stylesheet" id="cptch_stylesheet-css" href="https://web.archive.org/web/20210120073928cs_/https://digiversity.net/wp-content/plugins/captcha/css/front_end_style.css?ver=4.4.5" type="text/css" media="all"/> <link rel="stylesheet" id="dashicons-css" href="https://web.archive.org/web/20210120073928cs_/https://digiversity.net/wp-includes/css/dashicons.min.css?ver=4.9.16" type="text/css" media="all"/> <link rel="stylesheet" id="cptch_desktop_style-css" href="https://web.archive.org/web/20210120073928cs_/https://digiversity.net/wp-content/plugins/captcha/css/desktop_style.css?ver=4.4.5" type="text/css" media="all"/> <link rel="stylesheet" id="lightboxStyle-css" href="https://web.archive.org/web/20210120073928cs_/https://digiversity.net/wp-content/plugins/lightbox-plus/css/shadowed/colorbox.min.css?ver=2.7.2" type="text/css" media="screen"/> <script type="text/javascript" src="https://web.archive.org/web/20210120073928js_/https://digiversity.net/wp-includes/js/jquery/jquery.js?ver=1.12.4"></script> <script type="text/javascript" src="https://web.archive.org/web/20210120073928js_/https://digiversity.net/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1"></script> <link rel="https://api.w.org/" href="https://digiversity.net/wp-json/"/> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://digiversity.net/xmlrpc.php?rsd"/> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://digiversity.net/wp-includes/wlwmanifest.xml"/> <link rel="prev" title="Die „Musici“-Datenbank ist online" href="https://web.archive.org/web/20210120073928/https://digiversity.net/2013/musici-datenbank/"/> <link rel="next" title="Zusätzliche Javaoperationen für Oxygen XML Frameworks veröffentlicht" href="https://web.archive.org/web/20210120073928/https://digiversity.net/2013/zusaetzliche-javaoperationen-fuer-oxygen-xml-frameworks-veroeffentlicht/"/> <meta name="generator" content="WordPress 4.9.16"/> <link rel="canonical" href="https://web.archive.org/web/20210120073928/https://digiversity.net/2013/tutorial-wie-baue-ich-ein-oxygen-xml-framework/"/> <link rel="shortlink" href="https://web.archive.org/web/20210120073928/https://digiversity.net/?p=985"/> <link rel="alternate" type="application/json+oembed" href="https://web.archive.org/web/20210120073928/https://digiversity.net/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdigiversity.net%2F2013%2Ftutorial-wie-baue-ich-ein-oxygen-xml-framework%2F"/> <link rel="alternate" type="text/xml+oembed" href="https://web.archive.org/web/20210120073928/https://digiversity.net/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdigiversity.net%2F2013%2Ftutorial-wie-baue-ich-ein-oxygen-xml-framework%2F&format=xml"/> <style type="text/css" id="syntaxhighlighteranchor"></style> <style type="text/css" media="screen"> <!-- @import url( https://web.archive.org/web/20210120073928cs_/https://digiversity.net/wp-content/themes/digiversity-theme/style.css ); --> </style> </head> <body> <div id="container"> <div id="headerbg"></div> <div id="header"> <a id="logolink" href="https://web.archive.org/web/20210120073928/https://digiversity.net/"></a> <div class="headerleft"> <h1><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/"><span>digiversity</span></a></h1> <p>Webmagazin für Informationstechnologie in den Geisteswissenschaften</p> </div> <div class="headerright"> <ul> <li><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/">Startseite</a></li> <li class="page_item page-item-4 page_item_has_children"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/ueber/">Über das Webmagazin</a></li> <li class="page_item page-item-37"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/autoren/">Autoren</a></li> <li class="page_item page-item-23"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/links/">Links</a></li> <li><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/feed/">RSS</a></li> </ul> </div> </div> <div id="content"> <div id="contentleft"> <h1>Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML?</h1> <p>Seit 2012 wird von der <a href="https://web.archive.org/web/20210120073928/http://www.bbaw.de/telota" target="_blank">TELOTA-Initiative</a> an der Berlin-Brandenburgischen Akademie der Wissenschaften <a href="https://web.archive.org/web/20210120073928/http://www.bbaw.de/telota/software/ediarum" target="_blank">»ediarum«</a> entwickelt und <a title="Digitale Arbeitsumgebung für das Editionsvorhaben »Schleiermacher in Berlin 1808–1834«" href="https://web.archive.org/web/20210120073928/http://digiversity.net/2012/digitale-arbeitsumgebung-fur-das-editionsvorhaben-schleiermacher-in-berlin-1808-1834/">eingesetzt</a>. Dabei handelt es sich um ein Paket aus drei Softwarelösungen (Oxygen XML, eXistdb und ConTeXt), das es Wissenschaftlern in verschiedenen Editionsvorhaben ermöglicht, ihre Ergebnisse in TEI-XML zu bearbeiten, zu speichern und zu präsentieren. Damit die Eingabe und Bearbeitung möglichst komfortabel und einfach geschieht, wird als Eingabeoberfläche in ediarum die proprietäre <a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/xml_author.html" target="_blank">Software Oxygen XML Author</a> eingesetzt. Diese Software hat den Vorteil, dass die Bearbeiter nicht mehr direkt im XML-Code arbeiten, sondern in einer benutzerfreundlichen Oberfläche, die zum einen die XML-Datei optisch aufbereitet präsentiert und zum anderen Werkzeugleisten bereitstellt, mit denen per Knopfdruck XML-Elemente eingefügt bzw. Textteile ausgzeichnet werden können.</p> <p>Da jedes XML-Schema andere Elemente verlangt, gibt es in Oxygen XML Author natürlich nicht <em>die eine</em> Werkzeugeleiste. Stattdessen werden sog. Frameworks (auch »Dokumenttypzuordnungen« genannt) benutzt. In ihnen werden die Ansichten und Werkzeugleisten definiert, die auf eine ganz bestimmte Sorte von XML-Dokumenten angewendet werden können. Oxygen XML liefert einige Frameworks für weit verbreitete XML-Schemata schon mit, so z.B. für Docbook und DITA – oder eben für die TEI. Viel spannender ist aber die Möglichkeit, selbst eigene Frameworks zu erstellen, die genau für das eigene XML-Schema passen und maßgeschneiderte Werkzeugleisten und Ansichten mitbringen. Dieses Tutorial gibt Ihnen einen Überblick darüber, wie ein solches Oxygen-Framework erstellt wird.<span id="more-985"></span></p> <p><div class="scbb-content-box scbb-content-box-tutorialfacts"><strong>Empfohlene Voraussetzungen für dieses Tutorial<br/> </strong> <ul> <li>Vorkenntnisse: XML, XPATH, CSS</li> <li>Software: <a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/">Oxygen XML</a></li></ul></div></li> </ul> <h2>Schritt 1 – Ein Oxygen-Framework anlegen</h2> <p><a href="https://web.archive.org/web/20210120073928/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_005.jpg"><img class="alignright size-medium wp-image-1021" src="https://web.archive.org/web/20210120073928im_/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_005-300x246.jpg" alt="oxy_framework_tutorial_005" width="170" height="139" srcset="https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_005-300x246.jpg 300w, https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_005.jpg 780w" sizes="(max-width: 170px) 100vw, 170px"/></a>Die Frameworks in Oxygen finden wir im Menü Optionen > Einstellungen unter dem Punkt »Dokumenttypen-Zuordnung«. Anfangs sehen wir dort nur alle mit Oxygen XML Author zusammen gelieferten Frameworks. Wir möchten aber ein eigenes neues anlegen – das können wir unten über die Schaltfläche »Neu« tun.</p> <p>Im nun erscheinenden Fenster legen wir neben Namen und Beschreibung, vor allem den Speicherort fest. Damit wir das Framework nämlich am Ende weiterverteilen können, speichern wir es »extern«. Dazu erstellen wir im Programmordner im Unterordner frameworks einen neuen Ordner, dem wir den Namen unseres Frameworks geben, z.B. »briefedition-xyz«. In diesem Ordner können wir dann die eigentliche »Framework option file« mit der Dateiendung ».framework« speichern, die unsere Frameworkkonfiguration enthält. Es handelt sich dabei eigentlich um eine einfache XML-Datei, die wir aber auch bequem über das Dialogfenster in Oxgen XML Author bearbeiten können. Dadurch, dass wir sie extern gespeichert haben, können wir sie am Schluss anderen zur Verfügung stellen.</p> <p>Danach stellen wir noch den internen Bearbeitungsmodus auf »Autor«. Dadurch werden alle XML-Dateien automatisch erstmal in der Autoransicht geöffnet und nicht in der Codeansicht.</p> <div class="scbb-content-box scbb-content-box-red"><strong>Wichtig:</strong> Vergessen Sie nicht, im Dialogfenster »Dokumenttypen« auf »OK« zu klicken, damit die Veränderungen gespeichert werden! Das sollten Sie im übrigen auch mehrmals während der Arbeit am Framework tun.</div> <p>Über die Tabs können wir nun unser Framework konfigurieren. In diesem Tutorial folgen wir weitgehend der Anordnung der Tabs von links nach rechts.</p> <h2>Schritt 2 – Verknüpfungsregeln</h2> <p><a href="https://web.archive.org/web/20210120073928/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_006.jpg"><img class="size-medium wp-image-1022 alignleft" src="https://web.archive.org/web/20210120073928im_/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_006-300x193.jpg" alt="oxy_framework_tutorial_006" width="193" height="124" srcset="https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_006-300x193.jpg 300w, https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_006.jpg 522w" sizes="(max-width: 193px) 100vw, 193px"/></a>Mit Hilfe der Verknüpfungsregeln werden Frameworks einem Dokumenttyp zugeordnet. Das kann z.B. anhand des Dateinamens oder des Wurzelelements geschehen. Da wir derzeit stets mit TEI-Dateien arbeiten und Konflikte vermeiden wollen, benutzen wir bei TELOTA mittlerweile ein eigens für diesen Zweck geschaffenes Attribut telota:doctype im Wurzelelement TEI der XML-Dateien. Das schließt aus, dass das Framework aus Versehen für andere Dateien benutzt wird.</p> <h2>Schritt 3 – Schema einbinden</h2> <p><a href="https://web.archive.org/web/20210120073928/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_008.jpg"><img class="alignright size-medium wp-image-1023" src="https://web.archive.org/web/20210120073928im_/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_008-300x150.jpg" alt="oxy_framework_tutorial_008" width="208" height="104" srcset="https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_008-300x150.jpg 300w, https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_008.jpg 700w" sizes="(max-width: 208px) 100vw, 208px"/></a>Es ist wichtig – nicht nur für Oxygen XML –, dass ein Schema für die XML-Dateien vorliegt. Nur dadurch kann Oxygen zum einen die Dateien korrekt mit CSS darstellen (dazu später mehr) und zum anderen die Eingabe des Benutzers validieren. Der einfachste Weg ist es, die URL des Schema in der XML-Datei zu notieren. Dann steht das Schema allerdings nicht zur Verfügung, wenn offline gearbeitet wird. Um das zu verhindern kann man in Oxygen im Tab »Validierung« eine Validierung anlegen, die man dann als Standard definiert, der automatisch zur Prüfung verwendet wird. Diese Standardvalidierung kann auf ein lokal gespeichertes Schema verweisen (etwa im Frameworksordner) und ignoriert auch ein evtl. im Dokument notiertes Schema.</p> <h2>Schritt 4 – Dateivorlagen</h2> <p>Damit die XML-Dateien nicht jedesmal von Grund auf neu geschrieben werden müssen, können im Framework Dateivorlagen hinterlegt werden. Dazu legen wir im Ordner frameworks/briefedition-xyz einen Unterordner »templates« an und tragen diesen Pfad im Tab »Vorlagen« ein. Wenn wir dort nun XML-Dateien ablegen, werden diese unter ihrem Dateinamen dem Benutzer beim Erstellen einer neuen Datei zur Auswahl angeboten. In den Dateivorlagen können übrigens <a title="Oxygen-XML-Dokumentation zu diesem Thema" href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/topics/editor-variables.html">Oxygen-Editorvariablen</a> benutzt werden.</p> <div class="scbb-content-box scbb-content-box-gray"><strong>Tipp:</strong> In den meisten Pfadangaben, die Sie im Framework machen müssen, können Sie verschiedene Variablen benutzen. So lautet z.B. der Pfad zu den Dateivorlagen <code>${frameworkDir}/briefedition-xyz/templates</code> – die Variable „frameworkDir“ steht hier für den kompletten Pfad zum Frameworksverzeichnis der Oxygeninstallation. Welche Variablen Sie nutzen können erfahren Sie meistens durch einen Klick auf das Symbol rechts neben dem Pfadeingabefeld.</div> <h2>Schritt 5 – CSS</h2> <p>Kern eines Oxygen-Frameworks ist der Tab »Autor«. Dort können wir in der Rubrik CSS ein Stylesheet verknüpfen, mit dem die XML-Dateien angezeigt werden sollen. Wir können auch mehrere Stylesheets hinterlegen, die dem Benutzer zur Auswahl angeboten werden. Dadurch ist es möglich, für bestimmte Arbeitsschritte bestimmte Elemente oder Attribute hervorzuheben bzw. Auszublenden.</p> <p>Oxygen XML Author unterstützt einen großen Teil der CSS-Spezifikationen. Nicht unterstützt werden vorwiegend positionierungsrelevante CSS-Anweisungen. Einen detaillierten Überblick über die Unterstützung findet man in der Dokumentation im Abschnitt »CSS Support in Author«.</p> <p>Aber Oxygen unterstützt nicht nur die gängigen CSS-Formatierungen, sondern auch viele eigene CSS-Eigenschaften, die ebenfalls in der Dokumentation aufgelistet werden, z.B.:</p> <ul> <li>Elemente nicht bearbeitbar machen (<a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/index.html#topics/dg-editable-css-extension.html" target="_blank">-oxy-editable</a>)</li> <li>Platzhaltertext für leere Elemente (<a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/index.html#topics/dg-placeholder-css-extension.html" target="_blank">-oxy-placeholder-content</a>)</li> <li>Blocklevel-Elemente ein- und ausklappbar (<a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/index.html#topics/dg-folding-elements.html" target="_blank">-oxy-foldable</a>)</li> <li>Links aus Elementen (<a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/index.html#topics/dg-link-elements.html" target="_blank">link</a>)</li> </ul> <p>Darüber hinaus bietet Oxygen <a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/index.html#topics/dg-oxygen-css-functions.html" target="_blank">eigene Funktionen</a> an, die in vielen CSS-Eigenschaften eingesetzt werden können und sehr viel möglich machen. So kann z.B. aus einem Attributwert mit mehreren verschiedenen Identifikationsnummern die passende herausgeholt, beschnitten und in einem Link weiterverwendet werden.</p> <p>Sehr mächtig ist die Möglichkeit, mit Hilfe der <a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/index.html#concepts/dg-editor-function.html" target="_blank">Oxygen-CSS-Eigenschaften Formulare</a> zu bauen – auch und gerade, um Attribute mit Werten zu versehen.</p> <h2>Schritt 6 – Werkzeugleiste bauen</h2> <p>Kern des Frameworks sind die »Aktionen«, die durch eine Schalftläche – sei es in einer Werkzeugleiste, im Menü oder im Kontextmenü – ausgelöst werden. Für jedes vom Bearbeiter einzufügende Element (mitsamt Attributen und Kindelementen) muss eine Aktion angelegt werden. Wir wollen das an zwei Beispielen demonstrieren.</p> <h3>Beispiel 1: Schaltfläche zum Auszeichnen einer Textänderung</h3> <p>In der Briefedition sollen von den Bearbeitern bei der Transkription auch diejenigen Stellen im Text ausgezeichnet werden, bei denen der Autor im Manuskript erst ein Wort durchgestrichen und es durch ein anderes ersetzt hat. In TEI-XML könnte das z.B. so aussehen:</p> <pre class="brush: xml; title: ; notranslate" title=""><subst> <del rend="struck-through">bin</del> <add place="above">sind</add> </subst></pre> <p><a href="https://web.archive.org/web/20210120073928/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_011.jpg"><img class="alignright size-medium wp-image-1026" src="https://web.archive.org/web/20210120073928im_/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_011-300x291.jpg" alt="oxy_framework_tutorial_011" width="151" height="146" srcset="https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_011-300x291.jpg 300w, https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_011.jpg 700w" sizes="(max-width: 151px) 100vw, 151px"/></a>Nach dem Anlegen einer neuen Aktion sind ID, Name und Beschreibung der Aktion auszufüllen, außerdem können kleine Grafiken als Symbol für die Schaltfläche eingebunden werden. Der Hauptbestandteil einer Aktion sind allerdings die »Vorgänge«. Ein Vorgang besteht aus einer Bedingung, die in XPATH notiert ist sowie einer Javaoperation mitsamt ihren zu setzenden Argumenten. Für eine Aktion (d.h. Schaltfläche) kann man mehrere Vorgänge anlegen (ein großer Vorteil, wie wir im nächsten Beispiel sehen werden).</p> <p>Die Bedingung kann man in diesem Fall dazu verwenden, dass der Vorgang nur ausgeführt wird, wenn sich der Cursor innerhalb von tei:text befindet (und nicht etwa im teiHeader). Da unsere Aktion nur diesen einen Vorgang enthalten wird, wird Oxygen (ab Version 14.2) die Schaltfläche ausgrauen, wenn dem nicht so ist. Die Bedingung können wir dann als XPath so notieren:</p> <p><code>ancestor-or-self::text</code></p> <p>Danach können wir (im Feld untendrunter) die Javaoperation auswählen, also den eigentlichen Einfüge- bzw. Auszeichnungsvorgang definieren. Oxygen liefert schon Javaoperationen für die meisten Anwendungsfälle mit. Für unseren Fall ist »Surround with Fragment« nützlich, da wir vllt. nicht nur einfach das Element an der Stelle des Cursors einfügen, sondern einen markierten Text damit umgeben wollen. Wir wählen also diese Javaoperation aus. Danach sehen wir die zu setzenden Argumente. Wichtig ist hier vor allem das erste Argument, dass aus dem XML-Code besteht, den wir einfügen wollen. Ihn können wir nach einem Doppelklick auf das Feld bequem eintragen.</p> <p>Wenn Sie Namensräume benutzen, müssen Sie den Namensraum im Attribut @xmlns im obersten Element mit angeben.</p> <p>Sie können Attribute mit festen Werten einsetzen oder aber den Benutzer nach diesen Werten fragen. Dafür steht in Oxygen XML die Editorvariable ask bereit. Mit ihr können wir den Benutzer auffordern, einen frei wählbaren Wert einzugeben. In vielen Fällen möchten wir ihn aber eher aus einer Liste von Werten wählen lassen. Das ist mit derselben Variable auch möglich – und empfehlenswert. Darüber hinaus ist es mit weiteren Editorvariablen möglich, automatisch das aktuelle Datum oder eine generierte Identifikationsnummer zu setzen. In der <a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/topics/editor-variables.html" target="_blank">Oxygen-XML-Dokumentation</a> finden Sie eine Übersicht aller Variablen.</p> <p>Unser Beispiel sieht dann wie folgt aus:</p> <pre class="brush: xml; title: ; notranslate" title=""><subst xmlns="http://www.tei-c.org/ns/1.0"> <del rend="${ask('Art der Löschung', combobox, ('struck-through':'Durchgestrichen';'overwritten':'Überschrieben';'':'';), 'struck-through')}"></del> <add place="${ask('Ort der Hinzufügung', generic)}"></add> </subst></pre> <p>Jetzt nur noch bestätigen und unsere erste Aktion ist erstellt. Diese können wir nun je nach Bedarf in das Menü, das Kontextmenü oder eine Toolbar (»Symbolleiste«) einfügen. Dieser Abschnitt sollte selbsterklärend sein, aber ein Hinweis zum praktischen Einsatz kann nicht schaden: es ist sinnvoll im Menü alle Aktionen zu hinterlegen. In den Werkzeugleisten dann nur die wichtigsten und im Kontextmenü nur wenige, oft benutzte Aktionen, für die die Platzierung des Cursors relevant ist.</p> <h3>Beispiel 2: Schaltfläche zum Einfügen eines Strukturelement</h3> <p>Im Gegensatz zum ersten Beispiel, wo wir lediglich einen per Cursor markierten Textabschnitt ausgezeichnet haben, möchten wir nun ein sog. Strukturelement einfügen. Ein Element also, dass an einer einzigen, ganz bestimmten Stelle im XML-Baum notiert wird. In unserem Fall möchten wir z..B. den Absender, den Empfänger und das Schreibdatum in teiHeader/profileDesc notieren. Das könnte so aussehen:</p> <pre class="brush: xml; title: ; notranslate" title=""><creation> <date when="1808-01-02" cert="high"/> <persName type="absender" key="p216">Blanc, Ludwig Gottfried </persName> <persName type="empfänger" key="p1914">Schleiermacher, Friedrich Daniel Ernst</persName> </creation></pre> <p>Alle drei Elemente sowie das Elternelement creation sollen erst vom Bearbeiter hinzugefügt werden – und jedes für sich. Als Beispiel schauen wir uns die Aktion an, die den Absender einfügt – also das mittlere Element persName. Hier haben wir nun das Problem, dass wir folgende Varianten der vorhandenen XML-Strkutur beim Einfügen bedenken müssen:</p> <ol> <li>Das Element <code>creation</code> ist (samt Kindelementen natürlich) gar nicht vorhanden</li> <li>Das Element <code>creation</code> ist vorhanden, nicht jedoch das Kindelement <code>date</code></li> <li>Das Element <code>creation</code> und das Kindelement <code>date</code> sind vorhanden</li> </ol> <p>Abhängig vom jeweiligen Szenario ändert sich natürlich das einzufügende XML-Snippet und/oder die Position des einzufügenden XML-Snippet. Wir möchten aber keine drei Schaltflächen erstellen, sondern lediglich eine einzige. Unser Vorteil ist nun, dass wir pro Aktion mehrere Vorgänge anlegen und sie jeweils von Bedingungen abhänging machen können. Im konkreten Beispiel ergeben sich daher folgende Varianten:</p> <p><strong>Vorgang 1:</strong><br/> Bedingung, dass Element creation nicht vorhanden ist:<br/> <code>not(//teiHeader/profileDesc/creation)</code><br/> Ausgelöster Vorgang: Fügt <code>creation</code> mitsamt des Kindelementes <code>persName[@type='absender'</code>] als erstes Kindelement von profileDesc ein. Wir benutzen hier (und in den beiden anderen Varianten) die Java-Operation »InsertFragmentOperation«, die es uns erlaubt einen Einfügeposition relativ zu einem anderen ebenfalls wählbaren Element definieren.</p> <p><strong>Vorgang 2:</strong><br/> Bedingung, dass Element creation vorhanden ist, nicht jedoch date:<br/> <code>//profileDesc/creation and not(//creation/date)</code><br/> Ausgelöster Vorgang: Fügt persName[@type=’absender‘] als erstes Kindelement von creation ein.</p> <p><strong>Vorgang 3:</strong><br/> Bedingung, dass Element creation und Kindelement date vorhanden sind:<br/> <code>//profileDesc/creation and //profileDesc/creatioin/date</code><br/> Ausgelöster Vorgang: Das Element persName[@type=’absender‘] wird nach dem Element date eingefügt.</p> <div class="scbb-content-box scbb-content-box-gray">Zu beachten ist beim Anlegen mehrerer Vorgänge noch deren <strong>Ausführungspriorität</strong>. Es wird nämlich nur derjenige Vorgang ausgeführt, dessen Bedingung zuerst erfüllt sind. Daher ist bei der Formulierung der Bedingungen auch darauf zu achten.</div> <p><a href="https://web.archive.org/web/20210120073928/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_013.jpg"><img class="size-medium wp-image-1028 alignleft" src="https://web.archive.org/web/20210120073928im_/http://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_013-300x291.jpg" alt="oxy_framework_tutorial_013" width="160" height="156" srcset="https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_013-300x291.jpg 300w, https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-content/uploads/2013/10/oxy_framework_tutorial_013.jpg 700w" sizes="(max-width: 160px) 100vw, 160px"/></a>An diesem Beipsiel wird deutlich, dass wir mit ein und derselben Schaltfläche drei verschiedene Einfügevorgänge abdecken können, ohne dass der Nutzer sich darüber Gedanken machen muss. Wenn wir jetzt noch allen Bedingungen <code>//creation/persName[@type='absender']</code> hinzufügen, sorgen wir außerdem dafür, dass nur ein einzier Absender angelegt werden kann und ansonsten die Schaltfläche nicht zur Verfügung steht (d.h. ausgegraut angezeigt wird).</p> <p>Die so erstellten Aktionen können nun im selben Tab in das Menü, das Kontextmenü oder eine Werkzeugleiste eingefügt werden.</p> <div class="scbb-content-box scbb-content-box-gray">Neben den standardmäßig in Oxygen XML vorhandenen Java-Operationen hat TELOTA für seine Lösung »ediarum« noch einige weitere Operationen programmiert, die u.a. den gleichzeitigen Zugriff auf einen Index ermöglichen. Wir haben diese <a title="Zusätzliche Javaoperationen für Oxygen XML Frameworks veröffentlicht" href="https://web.archive.org/web/20210120073928/http://digiversity.net/2013/zusaetzliche-javaoperationen-fuer-oxygen-xml-frameworks-veroeffentlicht/">Java-Operationen mittlerweile zur Verfügung gestellt</a> und erläutern in einem eigenen <a title="Tutorial: Indexfunktionen für Oxygen XML Frameworks" href="https://web.archive.org/web/20210120073928/http://digiversity.net/2013/tutorial-indexfunktionen-fuer-oxygen-xml-frameworks/">Tutorial die Implementierung von Indexfunktionen</a>.</div> <h2>Schritt 7 – Verpacken und verteilen</h2> <p>Wenn wir unser Oxygen-Framework fertig gestellt und getestet haben, möchten wir es den Benutzern zur Verfügung zu stellen. Dafür steht in Oxygen XML seit der Version 14.0 das »Add-on«-Feature bereit, mit dem man Frameworks über einen Webserver an Oxygen XML Installationen ausliefern und später auch updaten kann. Das funktioniert so:</p> <ol> <li>Den Ordner framworks/briefedition-xyz als ZIP-Datei packen</li> <li>Die ZIP-Datei auf einen Webserver hochladen</li> <li>Auf dem Webserver eine XML-Datei mit einem bestimmten Format (siehe <a href="https://web.archive.org/web/20210120073928/http://digiversity.net/wp-content/uploads/2013/10/tutorial_oxygen_framework.zip">Beispieldateien</a> zu diesem Tutorial) anlegen und dort die Angaben zum Framework ergänzen. Am wichtigsten ist hier die Versionsnummer und der Pfad zur ZIP-Datei</li> <li>In einer Oxygen-XML-Installation unter Optionen > Einstellungen > Add-Ons die URL der XML-Datei eintragen</li> <li>Über Hilfe > Add-Ons verwalten kann man nun alle über diese URL verfügbaren Add-ons installieren oder updaten. Hat man in den Einstellungen (siehe vorhergehenden Punkt) das entsprechende Kästchen angehakt, wird man auch automatisch über Updates informiert.</li> </ol> <p>Dadurch können zukünftig Updates schnell und unkompliziert ausgeliefert und vom Benutzer selbst aktualisiert werden.</p> <h2>Wie geht’s weiter?</h2> <p>Dieses Tutorial sollte nur einen ersten Überblick über die Erstellung eines Oxygen-Frameworks geben. In der <a href="https://web.archive.org/web/20210120073928/http://www.oxygenxml.com/doc/ug-editor/index.html#topics/dg-complex-customization-tutorial.html">offziellen Dokumentation von Oxygen XML</a> finden Sie ausführliche Informationen zu diesem Thema. Außerdem ist geplant, demnächst weitere Tipps und Blogartikel zu ediarum veröffentlichen.</p> <div class="scbb-content-box scbb-content-box-tutorialfacts"><strong>Download</strong> <p>Das im Beispiel angelegte Oxygen-Framework <a href="https://web.archive.org/web/20210120073928/http://digiversity.net/wp-content/uploads/2015/01/tutorial_oxygen_framework.zip">können Sie sich hier herunterladen</a>. Darin enthalten ist auch eine Beispiel-XML-Datei für die Bereitstellung des Frameworks als »Add-On« auf einem Webserver.<br/> </p></div> <p>Update 29.01.2015: Korrigierte Version des Oxygen-Frameworks für dieses Tutorial hochgeladen.</p> <div style="clear:both;"></div> <div class="postinfo"> Veröffentlicht von Stefan Dumont am 30. Oktober 2013 | abgelegt unter <a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/how-to/" rel="category tag">How To</a>, <a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/tools/" rel="category tag">Tools</a> </div> <!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="https://digiversity.net/2013/tutorial-wie-baue-ich-ein-oxygen-xml-framework/" dc:identifier="https://digiversity.net/2013/tutorial-wie-baue-ich-ein-oxygen-xml-framework/" dc:title="Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML?" trackback:ping="https://digiversity.net/2013/tutorial-wie-baue-ich-ein-oxygen-xml-framework/trackback/" /> </rdf:RDF> --> <h3>Kommentare</h3> <!-- You can start editing here. --> <div id="commentblock"> <p id="comments"><b>7 Kommentare zu “Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML?”</b></p> <ol class="commentlist"> <li class="alt" id="comment-8998"> <a href="https://web.archive.org/web/20210120073928/http://dhd-blog.org/?p=2513" rel="external nofollow" class="url">Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML? | DHd-Blog</a> am Oktober 30th, 2013 13:51 <div class="commenttext"> <p>[…] eigene (TEI-)XML-Schema passen und maßgeschneiderte Werkzeugleisten und Ansichten mitbringen. Das Tutorial auf digiversity gibt einen Überblick darüber, wie ein solches Oxygen-Framework erstellt […]</p> </div> </li> <li class="" id="comment-9220"> <a href="https://web.archive.org/web/20210120073928/http://digiversity.net/2013/zusaetzliche-javaoperationen-fuer-oxygen-xml-frameworks-veroeffentlicht/" rel="external nofollow" class="url">Zusätzliche Javaoperationen für Oxygen XML Frameworks veröffentlicht — digiversity</a> am Dezember 16th, 2013 10:42 <div class="commenttext"> <p>[…] sofort sind zusätzliche Javaoperationen für Oxygen XML Frameworks als Java-Archive (JAR) und als Quellcode zur freien Verwendung verfügbar. Die Javaoperationen […]</p> </div> </li> <li class="alt" id="comment-9221"> <a href="https://web.archive.org/web/20210120073928/http://digiversity.net/2013/tutorial-indexfunktionen-fuer-oxygen-xml-frameworks/" rel="external nofollow" class="url">Tutorial: Indexfunktionen für Oxygen XML Frameworks — digiversity</a> am Dezember 16th, 2013 10:44 <div class="commenttext"> <p>[…] Basiert auf dem Tutorial: Wie baue ich ein eigenes Framework für Oxygen XML? […]</p> </div> </li> <li class="" id="comment-9224"> <a href="https://web.archive.org/web/20210120073928/http://dhd-blog.org/?p=2770" rel="external nofollow" class="url">Indexfunktionen in Oxygen XML Frameworks (Tutorial & Download) | DHd-Blog</a> am Dezember 16th, 2013 10:56 <div class="commenttext"> <p>[…] hat nun die im Rahmen von ediarum entwickelten zusätzlichen Javaoperationen für Oxygen XML Frameworks als Java-Archive (JAR) und als Quellcode auf github zur Verfügung gestellt. Sie ergänzen die […]</p> </div> </li> <li class="alt" id="comment-13137"> Sandro am Mai 10th, 2016 15:01 <div class="commenttext"> <p>Liebes Ediarum-Team,</p> <p>ich versuche gerade nach diesem Tutorial eigene Aktionen zu kreieren. Weder werden mir die Icons aus der ediarum.jar noch mein eigenes angezeigt.</p> <p>Haben Sie vielleicht eine Idee, was ich vergessen haben könnte.</p> <p>Mit herzlichen Grüßen<br/> Sandro Schwarz</p> </div> </li> <li class="" id="comment-13138"> Sandro am Mai 10th, 2016 15:20 <div class="commenttext"> <p>Wenn ich das TEI-framework um meine Aktion erweitere funktioniert es.</p> </div> </li> <li class="alt" id="comment-13172"> Stefan Dumont am August 1st, 2016 14:08 <div class="commenttext"> <p>Lieber Sandro,</p> <p>ich sehe leider jetzt erst Deinen Kommentar. Schick uns doch eine kurze Mail (siehe <a href="https://web.archive.org/web/20210120073928/http://www.bbaw.de/die-akademie/mitarbeiter/dumont" rel="nofollow">http://www.bbaw.de/die-akademie/mitarbeiter/dumont</a>), falls das Problem weiterbestehen sollte. Wir helfen gerne weiter.</p> <p>Beste Grüße<br/> Stefan Dumont</p> </div> </li> </ol> </div> <!-- begin r_sidebar --> <div id="r_sidebar"> <ul> <li id="Search"> <form method="get" id="search_form" action="https://web.archive.org/web/20210120073928/https://digiversity.net/"> <input type="text" class="search_input" value="Suchbegriff eingeben & Enter drücken" name="s" id="s" onfocus="if (this.value == 'Suchbegriff eingeben & Enter drücken') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Suchbegriff eingeben & Enter drücken';}"/> <input type="hidden" id="searchsubmit" value="Search"/></form><br/> </li> </ul> <ul id="r_sidebarwidgeted"> <li id="categories-3" class="widget widget_categories"><h2 class="widgettitle">Kategorien</h2> <ul> <li class="cat-item cat-item-1"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/allgemein/">Allgemein</a> </li> <li class="cat-item cat-item-3"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/buchtipp/" title="Literatur zu den "Digitalen Geisteswissenschaften"">Buchtipp</a> </li> <li class="cat-item cat-item-4"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/how-to/">How To</a> </li> <li class="cat-item cat-item-5"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/in-eigener-sache/" title="Informationen der Redaktion von digiversity.net">In eigener Sache</a> </li> <li class="cat-item cat-item-6"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/informationsdesign/" title="Aufbereitung und Design von geisteswissenschaftlichen Inhalten">Informationsdesign</a> </li> <li class="cat-item cat-item-7"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/linktipp/" title="Kurz und knackig: Links zu Blogs, Projekten, Tools etc.">Linktipp</a> </li> <li class="cat-item cat-item-8"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/neu-im-web/" title="Vorstellung von brandneuen Projekten aus dem Bereich der digitalen Geisteswissenschaften">Neu im Web</a> </li> <li class="cat-item cat-item-9"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/open-access/">Open Access</a> </li> <li class="cat-item cat-item-10"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/projekte/" title="Projekte in den digitalten Geisteswissenschaften">Projekte</a> </li> <li class="cat-item cat-item-11"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/publizieren-im-web/">Publizieren im Web</a> </li> <li class="cat-item cat-item-13"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/technologien/" title="Vorstellung von Software, Programmiersprachen, Tools etc.">Technologien</a> </li> <li class="cat-item cat-item-14"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/tools/">Tools</a> </li> <li class="cat-item cat-item-120"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/typografie/">Typografie</a> </li> <li class="cat-item cat-item-15"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/veranstaltungen/" title="Ankündigungen und Nachbesprechung von Veranstaltungen">Veranstaltungen</a> </li> <li class="cat-item cat-item-16"><a href="https://web.archive.org/web/20210120073928/https://digiversity.net/category/wissenschaft-in-der-wikipedia/" title="Mitarbeit von Wissenschaftlern in der Wikipedia, Wissenschaftsdarstellung in der Online-Enzyklopädie, Wissenschaftliche Untersuchungen der Wikipedia">Wissenschaft in der Wikipedia</a> </li> </ul> </li> <li id="text-4" class="widget widget_text"> <div class="textwidget"> <div id="publisher"> <h2>Herausgeber</h2> <ul> <li> <a href="https://web.archive.org/web/20210120073928/http://www.igl.uni-mainz.de/"><img src="https://web.archive.org/web/20210120073928im_/http://digiversity.net/wp-content/themes/digiversity-theme/images/igl_logo.jpg" alt="Das Logo des Instituts für Geschichtliche Landeskunde zeigt sechs verschiedenfarbige Silhouetten historischer Gebäude"/></a></li> <li> <a href="https://web.archive.org/web/20210120073928/http://www.digitale-akademie.de/"><img src="https://web.archive.org/web/20210120073928im_/http://digiversity.net/wp-content/themes/digiversity-theme/images/adw_logo.jpg" alt="Das Logo der Akademie der Wissenschaften zeigt einen Säulenpavillion"/></a></li> </ul> </div></div> </li> <li id="rss-3" class="widget widget_rss"><h2 class="widgettitle"><a class="rsswidget" href="https://web.archive.org/web/20210120073928/http://dhd-blog.org/?feed=rss2"><img class="rss-widget-icon" style="border:0" width="14" height="14" src="https://web.archive.org/web/20210120073928im_/https://digiversity.net/wp-includes/images/rss.png" alt="RSS"/></a> <a class="rsswidget" href="https://web.archive.org/web/20210120073928/https://dhd-blog.org/">DHd-Blog</a></h2> <ul><li><a class="rsswidget" href="https://web.archive.org/web/20210120073928/https://dhd-blog.org/?p=14905">Referentin / Referent (m/w/d) für bibliothekarisch-informationswissenschaftliche Services</a></li><li><a class="rsswidget" href="https://web.archive.org/web/20210120073928/https://dhd-blog.org/?p=14881">Das Monitoring von CLARIAH-DE</a></li><li><a class="rsswidget" href="https://web.archive.org/web/20210120073928/https://dhd-blog.org/?p=14865">Nachwuchswissenschaftler*innen gefragt: CLARIAH-DE Infrastruktur-Pitch auf der vDHd 2021</a></li></ul></li> <li id="linkcat-2" class="widget widget_links"><h2 class="widgettitle">Blogroll</h2> <ul class="xoxo blogroll"> <li><a href="https://web.archive.org/web/20210120073928/http://www.designtagebuch.de/" target="_blank">Design Tagebuch</a></li> <li><a href="https://web.archive.org/web/20210120073928/http://www.dhd-blog.org/" title="Digital Humanities im deutschsprachigen Raum" target="_blank">DHd-Blog</a></li> <li><a href="https://web.archive.org/web/20210120073928/http://www.iuwis.de/" target="_blank">IUWIS</a></li> <li><a href="https://web.archive.org/web/20210120073928/http://www.smashingmagazine.com/">Smashing Magazine</a></li> <li><a href="https://web.archive.org/web/20210120073928/http://weblog.histnet.ch/">weblog.histnet.ch</a></li> <li><a href="https://web.archive.org/web/20210120073928/http://www.wisspub.net/">WissPub.net</a></li> </ul> </li> </ul> </div> <!-- end r_sidebar --> </div> <!-- The main column ends --> <!-- begin footer --> <div style="clear:both;"></div> <div id="footer"> <p>© 2011-2013 <a href="https://web.archive.org/web/20210120073928/https://digiversity.net/">digiversity</a> • <a href="https://web.archive.org/web/20210120073928/http://digiversity.net/ueber/impressum/" title="Informationen zum Seitenbetreiber">Impressum</a>• <a href="https://web.archive.org/web/20210120073928/http://digiversity.net/ueber/datenschutz/" title="Datenschutzerklärung">Datenschutz</a></p> </div> <!-- Lightbox Plus Colorbox v2.7.2/1.5.9 - 2013.01.24 - Message: 0--> <script type="text/javascript"> jQuery(document).ready(function($){ $("a[rel*=lightbox]").colorbox({speed:350,initialWidth:"300",initialHeight:"100",opacity:0.8,loop:false,scrolling:false,escKey:false,arrowKey:false,top:false,right:false,bottom:false,left:false}); }); </script> <script type="text/javascript" src="https://web.archive.org/web/20210120073928js_/https://digiversity.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter2/scripts/shCore.js?ver=2.1.364"></script> <script type="text/javascript" src="https://web.archive.org/web/20210120073928js_/https://digiversity.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter2/scripts/shBrushXml.js?ver=2.1.364"></script> <script type="text/javascript"> (function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "https://web.archive.org/web/20210120073928/https://digiversity.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter2/styles/shCore.css?ver=2.1.364"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.getElementsByTagName("head")[0].insertBefore( corecss, document.getElementById("syntaxhighlighteranchor") ); var themecssurl = "https://web.archive.org/web/20210120073928/https://digiversity.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter2/styles/shThemeDefault.css?ver=2.1.364"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } //document.getElementById("syntaxhighlighteranchor").appendChild(themecss); document.getElementsByTagName("head")[0].insertBefore( themecss, document.getElementById("syntaxhighlighteranchor") ); })(); SyntaxHighlighter.config.clipboardSwf = 'https://web.archive.org/web/20210120073928/https://digiversity.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter2/scripts/clipboard.swf'; SyntaxHighlighter.config.strings.expandSource = 'Quelltext aufklappen'; SyntaxHighlighter.config.strings.viewSource = 'Quelltext anzeigen'; SyntaxHighlighter.config.strings.copyToClipboard = 'In die Zwischenablage kopieren'; SyntaxHighlighter.config.strings.copyToClipboardConfirmation = 'Der Quelltext wurde in die Zwischenablage kopiert'; SyntaxHighlighter.config.strings.print = 'Drucken'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Keine Syntax-Datei vorhanden für: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Die Syntax-Datei ist nicht für die „htmlscript” Option konfiguriert: '; SyntaxHighlighter.defaults['pad-line-numbers'] = false; SyntaxHighlighter.all(); </script> <link rel="stylesheet" id="scbb_custom_style-css" href="https://web.archive.org/web/20210120073928cs_/https://digiversity.net/wp-content/plugins/standout-color-boxes-and-buttons/css/custom.css?ver=0.7.0_1202021073928" type="text/css" media="all"/> <link rel="stylesheet" id="scbb_style-css" href="https://web.archive.org/web/20210120073928cs_/https://digiversity.net/wp-content/plugins/standout-color-boxes-and-buttons/css/scbb.css?ver=0.7.0_12202017175626" type="text/css" media="all"/> <script type="text/javascript" src="https://web.archive.org/web/20210120073928js_/https://digiversity.net/wp-content/plugins/easy-twitter-feed-widget/js/twitter-widgets.js?ver=1.0"></script> <script type="text/javascript" src="https://web.archive.org/web/20210120073928js_/https://digiversity.net/wp-content/plugins/lightbox-plus/js/jquery.colorbox.1.5.9-min.js?ver=1.5.9"></script> <script type="text/javascript" src="https://web.archive.org/web/20210120073928js_/https://digiversity.net/wp-includes/js/wp-embed.min.js?ver=4.9.16"></script> <!--stats_footer_test--><script src="https://web.archive.org/web/20210120073928js_/https://stats.wordpress.com/e-202103.js" type="text/javascript"></script> <script type="text/javascript"> st_go({blog:'12067200',v:'ext',post:'985'}); var load_cmc = function(){linktracker_init(12067200,985,2);}; if ( typeof addLoadEvent != 'undefined' ) addLoadEvent(load_cmc); else load_cmc(); </script> </div> <!-- Piwik --> <script type="text/javascript"> var pkBaseURL = (("https:" == document.location.protocol) ? "https://web.archive.org/web/20210120073928/https://stats.regionalgeschichte.net/" : "https://web.archive.org/web/20210120073928/http://stats.regionalgeschichte.net/"); document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); </script><script type="text/javascript"> try { var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 4); piwikTracker.trackPageView(); piwikTracker.enableLinkTracking(); } catch( err ) {} </script><noscript><p><img src="https://web.archive.org/web/20210120073928im_/http://stats.regionalgeschichte.net/piwik.php?idsite=4" style="border:0" alt=""/></p></noscript> <!-- End Piwik Tracking Code --> </body> </html><!-- FILE ARCHIVED ON 07:39:28 Jan 20, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 18:12:13 Mar 05, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 1.59 exclusion.robots: 0.033 exclusion.robots.policy: 0.019 esindex: 0.009 cdx.remote: 137.022 LoadShardBlock: 350.071 (3) PetaboxLoader3.datanode: 167.278 (4) PetaboxLoader3.resolve: 183.926 (2) load_resource: 222.692 -->