Mehr als ein Putzmittel

AJAX und XML in der Praxis
Keine Kommentare

AJAX – Asynchronous JavaScript and XML – beschäftigt die Online-Gemeinde immer mehr. Es ermöglicht die Entwicklung von Webapplikationen, die Desktop-Anwendungen ähneln. Auch wenn die Technologie erfahrenen Entwicklern nicht unbekannt ist, leistet sie doch einen sinnvollen Beitrag, um Webapplikationen interaktiver und benutzerfreundlicher zu machen. Inwieweit XML dabei zum Tragen kommt, zeigen wir in diesem Artikel.

Ein großes Manko war bis jetzt die Tatsache, dass vom Server immer nur ein simpler String geliefert wird. Eine Serialisierung komplexer Daten wird zwar serverseitig vielfältig unterstützt, clientseitig ist das aber recht mühsam. Das XML-HttpRequest-Objekt bietet nun jedoch eine eingebaute Möglichkeit, strukturierte Daten zu verwenden: XML. Doch damit nicht genug: JavaScript ermöglicht es außerdem, diese XML-Daten in den meisten relevanten Browsern weiterzuverarbeiten, und zwar unter anderem auf die folgenden drei Arten:

  • Durch direkten DOM-Zugriff auf die XML-Daten
  • Durch XPath-Suchen in den Daten
  • Durch XSLT-Umwandlungen der Daten

Ein kleines Problem soll aber nicht verschwiegen werden. Die zwei großen Herstellergruppen bei den relevanten Webbrowsern – Microsoft und der Rest – vertreten unterschiedliche Ansichten davon, wie diese Unterstützung aussehen soll. Um alle Unterschiede und Feinheiten verstehen zu können, bedarf es eines modernen JavaScript-Buchs und viel, viel Geduld. Deswegen gehen wir hier einen etwas frustfreieren Weg. In fast allen Fällen benötigen Sie nur bestimmte Funktionalitäten im Bereich XML, XPath und XSLT. Beispielsweise geht es bei XML darum, Knoten zu finden und auf deren Werte und Attribute zuzugreifen. Die Beispiele hier legen also den Schwerpunkt auf diese Funktionalität und zeigen, wie sie browserunabhängig umgesetzt werden kann.

XML per AJAX laden

Für die Verarbeitung von XML-Daten per AJAX ist zunächst einmal XML vonnöten. Um die Beispiele möglichst einfach und vor allem von serverseitigen Technologien unabhängig zu halten, setzen wir auf statische Daten (Listing 1).

Listing 1
-------------------------------------------------------------------------------------------------------
Die Beispiel-XML-Daten (daten.xml) 
AJAX - WikipediaBackground about the web                                               developmenttechnique for creating interactive web applications.http://en.wikipedia.org/wiki/AJAXAjax: A New Approach to Web Applications Title>
    <summary>Essay by Jesse James Garrett from Adaptive Path.</summary>http://www.adaptivepath.com/publications/essays/archives/000385.phpAFC AjaxOfficial site. Club information, match reports, news, and much more.http://www.ajax.nl/

Diese XML-Datei ist ein vereinfachter Auszug aus dem, was der Such-Web-Service von Yahoo! zurückliefert.

Diese XML-Datei enthält ein Wurzelelement, , sowie einzelne Unterelemente namens . Jedes dieser „Resultate“ umfasst einen Titel (</em>), eine Beschreibung/Zusammenfassung (<em><Summary></em>) und einen URL (<em></em>). Ziel der meisten Listings soll es sein, diese Daten schön formatiert auszugeben, was auch in tatsächlichen Projekten immer wieder eine Herausforderung darstellt. Wenn Sie das XMLHttpRequest-Objekt verwenden, gibt es nicht nur die Eigenschaft <em>responseText</em> zur Abfrage des Rückgabewerts, sondern auch die Eigenschaft <em>responseXML</em>. Diese wandelt die Rückgabe vom Server in ein XML-DOM-Objekt um – sofern der XML-Code auch valide ist. Ansonsten hat <em>responseXML</em> den Wert null. Vor allem der Internet Explorer stellt noch eine zusätzliche Bedingung an die XML-Daten: Sie müssen den richtigen MIME-Typ haben, damit sie auch wirklich als XML erkannt werden. Im vorliegenden Beispiel hat die Datei auf dem Server die Endung <em>.xml</em>, weswegen der Server in der Regel automatisch den richtigen Typ in der HTTP-Antwort mitschickt. Sollte das unterbleiben, müssen Sie entweder den Webserver entsprechend konfigurieren oder Sie schreiben ein kleines Hilfsskript, das die XML-Datei samt korrektem MIME-Typ ausgibt. Nachfolgend sehen Sie exemplarisch ein solches Hilfsskript für PHP, das den korrekten HTTP-Header für den MIME-Typ setzt und dann die Datei <em>daten.xml </em> ausgibt: </p> <div class="sourcecode"> <pre></pre></div> <div class="piccontent"><img src="https://entwickler.de/wp-content/uploads/2006/09/wenz1_cs4550a89a22069.gif" /> <div class="pictitle">Abb. 1: Die Daten erscheinen in der HTML-Tabelle</div> </div> <div class="headline">XML weiterverarbeiten</div> <p>Der Wert der Eigenschaft <em>responseXML</em> ist bereits ein XML-DOM-Dokument, sodass es der Browser direkt weiterverarbeiten kann. Trotz aller Unterschiede der einzelnen Browser funktionieren diese Methoden und Eigenschaften auf allen relevanten Systemen: </p> <div class="listcontent"> <ul><li>Die Eigenschaft <em>documentElement</em> zeigt auf den Wurzelknoten im Dokument. </li> <li>Die Eigenschaft <em>xml</em> enthält den eigentlichen Inhalt des XML-Objekts als String. </li> <li>Die Methode <em>getAttribute()</em> bietet den Zugriff auf ein Attribut eines XML-Knotens. </li> <li>Eine Liste aller Knoten mit dem angegebenen Namen liefert die Methode <em>get-ElementsByTagName()</em> zurück. </li> <li>Die Eigenschaft <em>childNodes</em> enthält alle Kindknoten des aktuellen Knotens (und es gibt natürlich die anderen, von DOM her bekannten Eigenschaften wie <em>firstChild, nextSibling</em> etc.). </li> <li> <em>nodeName</em> und <em>nodeValue</em> enthalten den Namen und den Wert eines Knotens. </li> </ul></div> <p>Der Zugriff auf den Knotentext via <em>nodeValue</em> funktioniert allerdings nur bei Textknoten. Wenn also beispielsweise <em><a>b</a></em> vorliegt und der aktuelle Knoten <em><a></em> ist, müssen Sie mit <em>firstChild.node-Value </em> auf den Text <em>b</em> zugreifen. </p> <p>Und das ist tatsächlich (fast) alles, was man in der Regel braucht. Bei der Verarbeitung von XML-Daten durchläuft man entweder das gesamte XML-Dokument (hier sind <em>childNodes</em> und Konsorten sehr praktisch) oder man greift direkt auf bekannte und benannte Knoten zu (mit <em>get-ElementsByTagName())</em>. Im folgenden Beispiel sehen Sie von allem etwas. Ziel ist es, die Daten in der XML-Datei auf der Seite auszugeben. Dazu sind bereits ein paar HTML-Platzhalter vorgesehen: </p> <div class="sourcecode"> <pre><p><span id="Anzahl">0</span> von <span id="Gesamt">0</span> Treffern:<div class='inline_promotion_center'><!-- /21339274/entwickler.de_contentAD1_Wordpress --> <div id='div-gpt-ad-1423481258370-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1423481258370-0'); }); </script> </div></div> </pre><table id="Treffer"><thead><tr><th>Titel</th><th>Beschreibung</th><th>URL</th></tr></thead></table></div> <p>Am einfachsten ist es natürlich, die beiden <em><span></em>-Elemente <em>Anzahl</em> und <em>Gesamt</em> zu füllen; die zugehörigen Informationen stehen direkt im Wurzelknoten der XML-Daten: </p> <div class="sourcecode"> <pre>var xml = XMLHTTP.responseXML; var anzahl = document.getElementById("Anzahl"); var gesamt = document.getElementById("Gesamt"); anzahl.innerHTML = xml.documentElement.getAttribute("totalResultsReturned"); gesamt.innerHTML = xml.documentElement.getAttribute("totalResultsAvailable"); </pre></div> <p>Etwas kniffliger sind die Daten, die in die HTML-Tabelle zu schreiben sind. Der <em><thead></em>-Bereich mit der Kopfzeile steht bereits fest, nur <em><tbody></em> fehlt noch. Dazu müssen alle <em> </em>-Elemente im XML durchlaufen werden: </p> <div class="sourcecode"> <pre>var treffer = document.getElementById("Treffer"); var tbody = document.createElement("tbody"); var ergebnisse = xml.getElementsByTagName("Result"); for (var i=0; i</pre></div> <p>Im Inneren der Schleife läuft immer derselbe Mechanismus ab: </p> <div class="listcontent"> <ol><li>Eine neue Tabellenzeile (<em> <tr>) wird erstellt. <li>Drei neue Tabellenzellen (<em> <td>) werden erstellt (für Titel, Beschreibung und URL). <li>Pro Zelle wird ein Textknoten mit den Daten aus dem XML erstellt. </li> <li>Abschließend werden die Textknoten an die Zellen und die Zellen an die Zeile und die Zeile an die Tabelle gehängt. </li> <p>Die größten Schwierigkeiten liegen hier vermutlich im dritten Schritt. Per <em>getElementsByTagName()</em> haben wir eine Liste von <em></em>-Knoten erhalten, aber über die Reihenfolge der Unterknoten ist nichts gesagt. Deswegen müssen Sie alle Unterknoten durchlaufen und jeweils deren <em>nodeName</em>-Eigenschaft überprüfen. Bei den drei Werten <em>Title, Summary</em> und <em>URL</em> schlagen Sie (virtuell) zu und erstellen den zugehörigen Textknoten (Listing 2). </p> <div class="sourcecode"> <pre>Listing 2 ---------------------------------------------------------------------- var zeile = document.createElement("tr"); var titel = document.createElement("td"); var beschreibung = document.createElement("td"); var url = document.createElement("td"); var titeltext, beschreibungtext, urltext; for (var j=0; j</pre></div> <p>Das war es im Wesentlichen auch schon. Übrig bleiben nur noch Aufräumarbeiten (etwa den <em><tbody></em>-Bereich in die Tabelle zu hängen) und die unvermeidliche Erzeugung nebst Aufruf des <em>XMLHttpRequest</em>-Objekts. In Listing 3 finden Sie den fast kompletten Code. Nur die immer wiederkehrende Instanziierung von XMLHttpRequest wurde aus Platzgründen weggelassen. </p> <p>Bis hierher funktionieren alle Listings in allen relevanten Browsern, also außer im Internet Explorer und in den verschiedenen Mozilla-Varianten auch im Konqueror/Safari und im Opera-Browser. Alle weiteren Listings beschränken sich leider zurzeit noch auf Internet Explorer und Mozilla, wobei immer die Hoffnung bleibt, dass die anderen Browser nachziehen. </p> <div class="sourcecode"> <pre>Listing 3 ------------------------------------------------------------ Die XML-Daten werden per JavaScript in die Tabelle eingefügt (XML.html) <p><span id="Anzahl">0</span> von <span id="Gesamt">0</span> Treffern:</p> </pre><table id="Treffer"><thead><tr><th>Titel</th><th>Beschreibung</th><th>URL</th> </tr></thead></table></div> </td></em></li></tr></em></li></ol></div> <div class="visible-xs col-xs-12"><section class="sands-article-sharer section"> <div class="socials-share"> <a target="_blank" data-shareto="Facebook" href="https://www.facebook.com/sharer/sharer.php?u=https://entwickler.de/?p=129408" class="social-share share-facebook"> <i class="fa fa-facebook"></i> </a> <a target="_blank" data-shareto="Twitter" href="https://twitter.com/home?status=Ich+empfehle+diesen+Artikel%3A+https%3A%2F%2Fentwickler.de%2F%3Fp%3D129408" class="social-share share-twitter"> <i class="fa fa-twitter"></i> </a> <a target="_blank" data-shareto="Google" href="https://plus.google.com/share?url=https://entwickler.de/?p=129408" class="social-share share-google-plus"> <i class="fa fa-google-plus"></i> </a> <a target="_blank" data-shareto="XING" href="https://www.xing.com/spi/shares/new?url=https://entwickler.de/?p=129408&title=http%3A%2F%2FAJAX%2520und%2520XML%2520in%2520der%2520Praxis&description=AJAX+-+Asynchronous+JavaScript+and+XML+-+besch%C3%A4ftigt+die+Online-Gemeinde+immer+mehr.+Es+erm%C3%B6glicht+die+Entwicklung+von+Webapplikationen%2C+die+Desktop-Anwendungen+%C3%A4hneln.+Auch+wenn+die+Technologie+erfahrenen+Entwicklern+nicht+unbekannt+ist%2C+leistet+sie+doch+einen+sinnvollen+Beitrag%2C+um+Webapplikationen+interaktiver+und+benutzerfreundlicher+zu+machen.+Inwieweit+XML+dabei+zum+Tragen+kommt%2C+zeigen+wir+in+diesem+Artikel.&source=http%3A%2F%2Fentwickler.de" class="social-share share-xing"> <i class="fa fa-xing"></i> </a> <a target="_blank" data-shareto="Linked In" href="http://www.linkedin.com/shareArticle?mini=true&url=https://entwickler.de/?p=129408&title=http%3A%2F%2FAJAX%2520und%2520XML%2520in%2520der%2520Praxis&summary=AJAX+-+Asynchronous+JavaScript+and+XML+-+besch%C3%A4ftigt+die+Online-Gemeinde+immer+mehr.+Es+erm%C3%B6glicht+die+Entwicklung+von+Webapplikationen%2C+die+Desktop-Anwendungen+%C3%A4hneln.+Auch+wenn+die+Technologie+erfahrenen+Entwicklern+nicht+unbekannt+ist%2C+leistet+sie+doch+einen+sinnvollen+Beitrag%2C+um+Webapplikationen+interaktiver+und+benutzerfreundlicher+zu+machen.+Inwieweit+XML+dabei+zum+Tragen+kommt%2C+zeigen+wir+in+diesem+Artikel.&source=http%3A%2F%2Fentwickler.de" class="social-share share-linkedin"> <i class="fa fa-linkedin"></i> </a> </div> <!--<div class="article-shorturl"> <input type="text" id="shorturl" class="shorturl" data-clipboard-text="https://entwickler.de/?p=129408" value="https://entwickler.de/?p=129408"> </div>--> </section> <div class="dummy-share-block"></div></div> <div id="end-content"></div> </section> <section class="popup-post"> <strong class="popup-heading">Unsere Redaktion empfiehlt:</strong> <div class="popup-content"> <h3 class="post-title"><a href="https://entwickler.de/online/komponentenorientiert-vs-nicht-komponentenorientiert-129419.html">Komponentenorientiert vs. nicht komponentenorientiert</a></h3> </div> <a href="#" class="popup-close"><i class="fa fa-close"></i></a> </section> <section id="related-post" class="post-three-columns post-columns section"> <div class="row clearfix"> <div class="col-md-12 section-heading-wrapper"> <h3 class="section-heading">Relevante <strong>Beiträge</strong></h3> </div> </div> <div class="row clearfix relatedfix"> <div class="col-md-4"> <article class="post-list"> <figure class="thumb half-thumb "> <a href="https://entwickler.de/online/php/webinale-ipc-early-bird-2021-579960180.html" class=""> <img class='lazyOwl unveil' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/placeholder/450x225.png' data-src='https://entwickler.de/wp-content/uploads/2019/12/ijs-early-bird-picture-300x150.jpg' alt='Webinale & IPC 2021: Bis zum 6. Mai das Early-Bird-Angebot nutzen & volles Programm von überall aus verfolgen!'> </a> </figure> <header class="content"> <h1 class="post-title"><a href="https://entwickler.de/online/php/webinale-ipc-early-bird-2021-579960180.html">Webinale & IPC 2021: Bis zum 6. Mai das Early-Bird-Angebot nutzen & volles Programm von überall aus verfolgen!</a></h1> <div class="post-meta"> <span class="post-author">Von <a href="https://entwickler.de/author/redaktion" rel="author">Redaktion</a> </span> <time class="post-date" datetime="2021-05-03 13:00:11"> 1 Woche online </time> </div> </header> </article> </div> <div class="col-md-4"> <article class="post-list"> <figure class="thumb half-thumb "> <a href="https://entwickler.de/online/php/composer-vulnerability-579967435.html" class=""> <img class='lazyOwl unveil' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/placeholder/450x225.png' data-src='https://entwickler.de/wp-content/uploads/2021/04/shutterstock_1836048823-300x150.jpg' alt='Composer & Mercurial: Sicherheitslücke macht Security Update erforderlich'> </a> </figure> <header class="content"> <h1 class="post-title"><a href="https://entwickler.de/online/php/composer-vulnerability-579967435.html">Composer & Mercurial: Sicherheitslücke macht Security Update erforderlich</a></h1> <div class="post-meta"> <span class="post-author">Von <a href="https://entwickler.de/author/jberneckesandsmedia-com" rel="author">Jan Bernecke</a> </span> <time class="post-date" datetime="2021-04-29 08:53:28"> 2 Wochen online </time> </div> </header> </article> </div> <div class="col-md-4"> <article class="post-list"> <figure class="thumb half-thumb "> <a href="https://kiosk.entwickler.de/php-magazin/php-magazin-3-2021/anbindung-der-datenwelt/" class=""> <img class='lazyOwl unveil' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/placeholder/450x225.png' data-src='https://entwickler.de/wp-content/uploads/2021/04/EKiosk_WebTech_900x450-1-300x150.jpg' alt='Anbindung der Datenwelt: PHP End to End – Teil 3'> </a> </figure> <header class="content"> <h1 class="post-title"><a href="https://kiosk.entwickler.de/php-magazin/php-magazin-3-2021/anbindung-der-datenwelt/">Anbindung der Datenwelt: PHP End to End – Teil 3</a></h1> <div class="post-meta"> <span class="post-author">Von <a href="https://entwickler.de/author/redaktion" rel="author">Redaktion</a> </span> <time class="post-date" datetime="2021-04-27 12:00:52"> 2 Wochen online </time> </div> </header> </article> </div> </div> <!-- related fix --><div class="row clearfix relatedfix"> <div class="col-md-4"> <article class="post-list"> <figure class="thumb half-thumb "> <a href="https://entwickler.de/online/ml-iot-conference-2021-fruehbucher-aktion-noch-bis-donnerstag-15-april-579965660.html" class=""> <img class='lazyOwl unveil' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/placeholder/450x225.png' data-src='https://entwickler.de/wp-content/uploads/2021/04/ML-Conference-2021-300x150.jpg' alt='ML & IoT Conference 2021: Frühbucher-Aktion noch bis Donnerstag, 15. April'> </a> </figure> <header class="content"> <h1 class="post-title"><a href="https://entwickler.de/online/ml-iot-conference-2021-fruehbucher-aktion-noch-bis-donnerstag-15-april-579965660.html">ML & IoT Conference 2021: Frühbucher-Aktion noch bis Donnerstag, 15. April</a></h1> <div class="post-meta"> <span class="post-author">Von <a href="https://entwickler.de/author/redaktion" rel="author">Redaktion</a> </span> <time class="post-date" datetime="2021-04-13 16:05:54"> 4 Wochen online </time> </div> </header> </article> </div> <div class="col-md-4"> <article class="post-list"> <figure class="thumb half-thumb "> <a href="https://kiosk.entwickler.de/php-magazin/php-magazin-3-2021/was-ist-neu-in-php-8-0-ein-blick-auf-die-neuen-funktionen/" class=""> <img class='lazyOwl unveil' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/placeholder/450x225.png' data-src='https://entwickler.de/wp-content/uploads/2021/04/EKiosk_WebTech_900x450-300x150.jpg' alt='Was ist neu in PHP 8.0? Ein Blick auf die neuen Funktionen'> </a> </figure> <header class="content"> <h1 class="post-title"><a href="https://kiosk.entwickler.de/php-magazin/php-magazin-3-2021/was-ist-neu-in-php-8-0-ein-blick-auf-die-neuen-funktionen/">Was ist neu in PHP 8.0? Ein Blick auf die neuen Funktionen</a></h1> <div class="post-meta"> <span class="post-author">Von <a href="https://entwickler.de/author/larry-garfield" rel="author">Larry Garfield</a> </span> <time class="post-date" datetime="2021-04-13 12:00:14"> 4 Wochen online </time> </div> </header> </article> </div> <div class="col-md-4"> <article class="post-list"> <figure class="thumb half-thumb "> <a href="https://entwickler.de/online/php/php-8-0-garfield-features-579965637.html" class=""> <img class='lazyOwl unveil' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/placeholder/450x225.png' data-src='https://entwickler.de/wp-content/uploads/2021/04/shutterstock_1598594830-300x150.jpg' alt='Was kann PHP 8.0? Core-Entwickler Larry Garfield stellt seine Highlights vor'> </a> </figure> <header class="content"> <h1 class="post-title"><a href="https://entwickler.de/online/php/php-8-0-garfield-features-579965637.html">Was kann PHP 8.0? Core-Entwickler Larry Garfield stellt seine Highlights vor</a></h1> <div class="post-meta"> <span class="post-author">Von <a href="https://entwickler.de/author/larry-garfield" rel="author">Larry Garfield</a> </span> <time class="post-date" datetime="2021-04-13 10:27:37"> 4 Wochen online </time> </div> </header> </article> </div> </div> <!-- related fix --> </section> <div class="wpdiscuz_top_clearing"></div> <div id='comments' class='comments-area'><div id='respond' style='width: 0;height: 0;clear: both;margin: 0;padding: 0;'></div> <div id="wpdcom" class="wpdiscuz_unauth wpd-default wpd-layout-2 wpd-comments-open"> <div class="wc_social_plugin_wrapper"> </div> <div class="wpd-form-wrap"> <div class="wpd-form-head"> <div class="wpd-sbs-toggle"> <i class="far fa-envelope"></i> <span class="wpd-sbs-title">Abonnieren</span> <i class="fas fa-caret-down"></i> </div> <div class="wpd-auth"> <div class="wpd-login"> </div> </div> </div> <div class="wpdiscuz-subscribe-bar wpdiscuz-hidden"> <form action="https://entwickler.de/wp-admin/admin-ajax.php?action=wpdAddSubscription" method="post" id="wpdiscuz-subscribe-form"> <div class="wpdiscuz-subscribe-form-intro">Benachrichtige mich bei </div> <div class="wpdiscuz-subscribe-form-option" style="width:40%;"> <select class="wpdiscuz_select" name="wpdiscuzSubscriptionType" > <option value="post">allen neuen Kommentare</option> <option value="all_comment" >nur Antworten zu meinen Kommentar/en</option> </select> </div> <div class="wpdiscuz-item wpdiscuz-subscribe-form-email"> <input class="email" type="email" name="wpdiscuzSubscriptionEmail" required="required" value="" placeholder="E-Mail"/> </div> <div class="wpdiscuz-subscribe-form-button"> <input id="wpdiscuz_subscription_button" class="wpd-prim-button" type="submit" value="›" name="wpdiscuz_subscription_button" /> </div> <input type="hidden" id="wpdiscuz_subscribe_form_nonce" name="wpdiscuz_subscribe_form_nonce" value="24d95fbd8c" /><input type="hidden" name="_wp_http_referer" value="/online/ajax-und-xml-in-der-praxis-129408.html" /> </form> </div> <div class="wpd-form wpd-form-wrapper wpd-main-form-wrapper" id='wpd-main-form-wrapper-0_0'> <form class="wpd_comm_form wpd_main_comm_form" method="post" enctype="multipart/form-data"> <div class="wpd-field-comment"> <div class="wpdiscuz-item wc-field-textarea"> <div class="wpdiscuz-textarea-wrap wpd-txt"> <div class="wpd-avatar"> <img src="https://entwickler.de/wp-content/uploads/2014/10/gravatar-mystery-man-65x65.jpg" width="56" height="56" alt="guest" class="avatar avatar-56 wp-user-avatar wp-user-avatar-56 photo avatar-default" /> </div> <div class="wpd-textarea-wrap"> <textarea id="wc-textarea-0_0" placeholder="Hinterlassen Sie den ersten Kommentar!" required name="wc_comment" class="wc_comment wpd-field"></textarea> </div> </div> </div> </div> <div class="wpd-form-foot" > <div class="wpdiscuz-textarea-foot"> <div class="wpdiscuz-button-actions"></div> </div> <div class="wpd-form-row"> <div class="wpd-form-col-left"> <div class="wpdiscuz-item wc_name-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-user"></i></div> <input id="wc_name-0_0" value="" required='required' class="wc_name wpd-field" type="text" name="wc_name" placeholder="Name*" maxlength="50" pattern='.{3,50}' title=""> <label for="wc_name-0_0" class="wpdlb">Name*</label> </div> <div class="wpdiscuz-item wc_email-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-at"></i></div> <input id="wc_email-0_0" value="" required='required' class="wc_email wpd-field" type="email" name="wc_email" placeholder="Email*" /> <label for="wc_email-0_0" class="wpdlb">Email*</label> </div> <div class="wpdiscuz-item wc_website-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-link"></i></div> <input id="wc_website-0_0" value="" class="wc_website wpd-field" type="text" name="wc_website" placeholder="Website" /> <label for="wc_website-0_0" class="wpdlb">Website</label> </div> </div> <div class="wpd-form-col-right"> <div class="wpd-field-captcha wpdiscuz-item"> <div class="wpdiscuz-recaptcha" id='wpdiscuz-recaptcha-0_0'></div> <input id='wpdiscuz-recaptcha-field-0_0' type='hidden' name='wc_captcha' value="" required="required" class="wpdiscuz_reset"/> <div class="clearfix"></div> </div> <div class="wc-field-submit"> <input id="wpd-field-submit-0_0" class="wc_comm_submit wpd_not_clicked wpd-prim-button" type="submit" name="submit" value="Kommentar veröffentlichen" /> </div> </div> <div class="clearfix"></div> </div> </div> <input type="hidden" class="wpdiscuz_unique_id" value="0_0" name="wpdiscuz_unique_id"> </form> </div> <div id="wpdiscuz_hidden_secondary_form" style="display: none;"> <div class="wpd-form wpd-form-wrapper wpd-secondary-form-wrapper" id='wpd-secondary-form-wrapper-wpdiscuzuniqueid' style='display: none;'> <div class="wpd-secondary-forms-social-content"></div><div class="clearfix"></div> <form class="wpd_comm_form wpd-secondary-form-wrapper" method="post" enctype="multipart/form-data"> <div class="wpd-field-comment"> <div class="wpdiscuz-item wc-field-textarea"> <div class="wpdiscuz-textarea-wrap wpd-txt"> <div class="wpd-avatar"> <img src="https://entwickler.de/wp-content/uploads/2014/10/gravatar-mystery-man-65x65.jpg" width="56" height="56" alt="guest" class="avatar avatar-56 wp-user-avatar wp-user-avatar-56 photo avatar-default" /> </div> <div class="wpd-textarea-wrap"> <textarea id="wc-textarea-wpdiscuzuniqueid" placeholder="An Diskussion beteiligen" required name="wc_comment" class="wc_comment wpd-field"></textarea> </div> </div> </div> </div> <div class="wpd-form-foot" > <div class="wpdiscuz-textarea-foot"> <div class="wpdiscuz-button-actions"></div> </div> <div class="wpd-form-row"> <div class="wpd-form-col-left"> <div class="wpdiscuz-item wc_name-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-user"></i></div> <input id="wc_name-wpdiscuzuniqueid" value="" required='required' class="wc_name wpd-field" type="text" name="wc_name" placeholder="Name*" maxlength="50" pattern='.{3,50}' title=""> <label for="wc_name-wpdiscuzuniqueid" class="wpdlb">Name*</label> </div> <div class="wpdiscuz-item wc_email-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-at"></i></div> <input id="wc_email-wpdiscuzuniqueid" value="" required='required' class="wc_email wpd-field" type="email" name="wc_email" placeholder="Email*" /> <label for="wc_email-wpdiscuzuniqueid" class="wpdlb">Email*</label> </div> <div class="wpdiscuz-item wc_website-wrapper wpd-has-icon"> <div class="wpd-field-icon"><i class="fas fa-link"></i></div> <input id="wc_website-wpdiscuzuniqueid" value="" class="wc_website wpd-field" type="text" name="wc_website" placeholder="Website" /> <label for="wc_website-wpdiscuzuniqueid" class="wpdlb">Website</label> </div> </div> <div class="wpd-form-col-right"> <div class="wpd-field-captcha wpdiscuz-item"> <div class="wpdiscuz-recaptcha" id='wpdiscuz-recaptcha-wpdiscuzuniqueid'></div> <input id='wpdiscuz-recaptcha-field-wpdiscuzuniqueid' type='hidden' name='wc_captcha' value="" required="required" class="wpdiscuz_reset"/> <div class="clearfix"></div> </div> <div class="wc-field-submit"> <input id="wpd-field-submit-wpdiscuzuniqueid" class="wc_comm_submit wpd_not_clicked wpd-prim-button" type="submit" name="submit" value="Kommentar veröffentlichen" /> </div> </div> <div class="clearfix"></div> </div> </div> <input type="hidden" class="wpdiscuz_unique_id" value="wpdiscuzuniqueid" name="wpdiscuz_unique_id"> </form> </div> </div> </div> <div id="wpd-threads" class="wpd-thread-wrapper"> <div class="wpd-thread-head"> <div class="wpd-thread-info "> <span class='wpdtc'>0</span> Comments </div> <div class="wpd-space"></div> <div class="wpd-thread-filter"> <div class="wpd-filter wpdf-reacted wpd_not_clicked" wpd-tooltip="Kommentar, auf das am meisten reagiert wurde"><i class="fas fa-bolt"></i></div> <div class="wpd-filter wpdf-hottest wpd_not_clicked" wpd-tooltip="Beliebtestes Kommentar Thema"><i class="fas fa-fire"></i></div> </div> </div> <div class="wpd-comment-info-bar"> <div class="wpd-current-view"><i class="fas fa-quote-left"></i> Inline Feedbacks</div> <div class="wpd-filter-view-all">View all comments</div> </div> <div class="wpd-thread-list"> <div class="wpdiscuz-comment-pagination"> </div> </div> </div> </div> </div> <div id="wpdiscuz-loading-bar" class="wpdiscuz-loading-bar-unauth"></div> <div id="wpdiscuz-comment-message" class="wpdiscuz-comment-message-unauth"></div> </article> <!-- Side Ads --> <div id="sidecontent-promotion" class="container"> <!-- entwickler.de_skyscraper1_Wordpress --> <div id='div-gpt-ad-1423481258370-6' class='skyad-right' style="margin-top:0px; top: 106px; left: 50%;margin-left: +514px;width: 120px;height: 600px;position: fixed;"> </div> </div> </div> <!-- 33333 --> <div class="d-flex__item hidden-xs hidden-sm"> <div class="d-flex__item--sticky"> <div id="text-45" class="widget widget_text"> <div class="textwidget"><div><a href="https://kiosk.entwickler.de/?utm_source=entwickler.de&utm_medium=referral&utm_campaign=ws_special_ms"><img src="https://entwickler.de/wp-content/uploads/2021/04/EKiosk_21_Webbanner_WS_Microservices_120x600_rechts_61572_v1.jpg" alt="entwickler.kiosk - Unser Wissen. Dein Vorsprung." /></a></div> <p><!-- /21339274/entwickler.de-fireplacead-right --></p> <div id="div-gpt-ad-1590762596250-0" style="width: 120px; height: 600px;"><script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1590762596250-0'); }); </script></div> </div> </div> </div> </div> </div> <style> @media only screen and (max-width: 1349px ) { .skyscraper-detail{ display:none; } } @media only screen and (min-width: 1350px ) { .skyscraper-detail{ left: 1180px; } } @media only screen and (min-width: 1600px ) { .skyscraper-detail{ left: 1310px; } } </style> <!-- /21339274/entwickler.de_skyscraper_detail_Wordpress --> <div id='div-gpt-ad-1573211386388-0' class="skyscraper-detail visible-lg" style='position: absolute; top:50px; width: 160px; height: 600px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1573211386388-0'); }); </script> </div> <!-- FOOTER --> <footer id="footer"> <div id="footer-content" class="container clearfix"> <aside class="col-md-3 column"> <div class="footer-widget widget_nav_menu" id="nav_menu-9"><h2 class="widget-title">Online</h2><div class="menu-online-container"><ul id="menu-online" class="menu"><li id="menu-item-579837453" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-579837453"><a href="https://entwickler.de/">entwickler.de</a></li> <li id="menu-item-112715" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112715"><a href="http://jaxenter.de">JAXenter.de</a></li> <li id="menu-item-112716" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112716"><a href="http://jaxenter.com">JAXenter.com</a></li> </ul></div></div> </aside> <aside class="col-md-3 column"> <div class="footer-widget widget_nav_menu" id="nav_menu-10"><h2 class="widget-title">Magazine</h2><div class="menu-magazine-container"><ul id="menu-magazine" class="menu"><li id="menu-item-149283" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-149283"><a href="http://entwickler.de/entwickler-magazin">Entwickler Magazin</a></li> <li id="menu-item-112718" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112718"><a href="http://entwickler.de/php-magazin">PHP Magazin</a></li> <li id="menu-item-112722" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112722"><a href="https://entwickler.de/windows-developer-magazin">Windows Developer</a></li> <li id="menu-item-149282" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-149282"><a href="http://entwickler.de/mobile-technology">Mobile Technology</a></li> <li id="menu-item-112723" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112723"><a href="https://entwickler.de/cloud-compendium">Cloud Compendium</a></li> <li id="menu-item-112720" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112720"><a href="https://entwickler.de/javascript-kompendium">JavaScript Kompendium</a></li> <li id="menu-item-112719" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112719"><a href="https://jaxenter.de/magazine/java-magazin">Java Magazin</a></li> <li id="menu-item-112721" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112721"><a href="https://jaxenter.de/magazine/business-technology">Business Technology</a></li> </ul></div></div> </aside> <aside class="col-md-3 column"> <div class="footer-widget widget_nav_menu" id="nav_menu-11"><h2 class="widget-title">Konferenzen</h2><div class="menu-konferenzen-container"><ul id="menu-konferenzen" class="menu"><li id="menu-item-112724" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112724"><a href="https://jax.de">JAX</a></li> <li id="menu-item-112725" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112725"><a href="https://basta.net">BASTA!</a></li> <li id="menu-item-112726" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112726"><a href="https://phpconference.com">International PHP Conference</a></li> <li id="menu-item-112727" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112727"><a href="https://javascript-conference.com/">International JavaScript Conference</a></li> <li id="menu-item-112728" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112728"><a href="https://webinale.de">webinale</a></li> <li id="menu-item-112729" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112729"><a href="https://mobiletechcon.de/">MobileTech Conference</a></li> <li id="menu-item-173190" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-173190"><a href="https://iotcon.de/">Internet of Things Conference</a></li> <li id="menu-item-173189" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-173189"><a href="http://devopsconference.de/de/">DevOpsCon</a></li> <li id="menu-item-579837461" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-579837461"><a href="https://apiconference.net/">API Conference</a></li> <li id="menu-item-579837462" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-579837462"><a href="https://mlconference.ai/">Machine Learning Conference</a></li> </ul></div></div> </aside> <aside class="col-md-3 column"> <div class="footer-widget"><div id="nav_menu-16" class="widget widget_nav_menu"><p class="widget-title">Service</p><div class="menu-service-container"><ul id="menu-service" class="menu"><li id="menu-item-579837443" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-579837443"><a href="https://entwickler.de/kontakt">Leserservice & Kontakt</a></li> <li id="menu-item-579837446" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-579837446"><a href="https://entwickler.de/anzeigenservice">Anzeigenservice & Werbung</a></li> <li id="menu-item-579837444" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-579837444"><a href="https://entwickler.de/autor-werden">Autor werden</a></li> <li id="menu-item-579837445" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-579837445"><a href="https://entwickler.de/digital-lesen">Digital lesen</a></li> <li id="menu-item-579837447" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-579837447"><a href="https://entwickler.de/social-media-uebersicht">Social Media</a></li> <li id="menu-item-112730" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112730"><a href="http://entwickler-akademie.de/">Entwickler Akademie</a></li> <li id="menu-item-111288" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-111288"><a href="http://sandsmedia.com/de/unternehmen">Über S&S Media</a></li> </ul></div></div> </div></aside> <aside class="col-md-12 column"> <!-- Start - HTML Javascript Adder plugin v3.9 --> <div id="html_javascript_adder-14" class="widget widget_html_javascript_adder"> <div class="hjawidget textwidget"> <ul id="menu-footer-impressum" class="menu"><li id="menu-item-112731" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-112731"><a href="http://sandsmedia.com/">Software & Support Media GmbH</a></li> <li id="menu-item-112732" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-112732"><a href="/impressum">Impressum</a></li> <li id="menu-item-112733" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-112733"><a href="/datenschutz/">Datenschutz</a></li> <li id="menu-item-112734" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-112734"><a href="/datenschutz-shop">Datenschutz-Shop</a></li> <li id="menu-item-123344" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-123344"><a href="/entwicklerde_agb">AGB</a></li> <li id="menu-item-112842" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-112842"><a href="/lieferkonditionen">Lieferkonditionen</a></li> </ul> </div> </div><!-- End - HTML Javascript Adder plugin v3.9 --> </aside> </div> <!-- /.footer-wrapper --> <div class="footer-bottom container center" > <p class="copyright"></p> </div> <!-- /.footer-bottom --> </footer> <!-- /#footer --> </div> <div class="ajax-overlay"> <div id="postloader"></div> </div> </div> </div> <div id="gmw-cl-form-wrapper" class="gmw-cl-form-wrapper"><span id="gmw-cl-close-btn">X</span><form id="gmw-cl-form" name="gmw_cl_form" onsubmit="return false"><div id="gmw-cl-info-wrapper"><div id="gmw-cl-location-message">- Gib Deinen Standort ein -</div><div id="gmw-cl-input-fields"><input type="text" name="gmw-cl_address" id="gmw-cl-address" value="" placeholder="zipcode or full address..." /><input id="gmw-cl-submit-address" type="submit" value="go" /></div><div> - or - </div><div id="gmw-cl-get-location"><a href="#" id="gmw-cl-trigger" >Erhalte Deinen aktuellen Standort</a></div></div><div id="gmw-cl-respond-wrapper" style="display:none;"><div id="gmw-cl-spinner"><img src="https://entwickler.de/wp-content/plugins/geo-my-wp/assets/images/gmw-loader.gif" /></div><div id="gmw-cl-message"></div><div id="gmw-cl-map" style="width:100%;height:100px;display:none;"></div></div></form></div><div id="gmw-cl-hidden-form-wrapper"> <form id="gmw-cl-hidden-form" method="post"> <input type="hidden" id="gmw-cl-street" name="gmw_cl_location[street]" value="" /> <input type="hidden" id="gmw-cl-city" name="gmw_cl_location[city]" value="" /> <input type="hidden" id="gmw-cl-state" name="gmw_cl_location[state]" value="" /> <input type="hidden" id="gmw-cl-state-long" name="gmw_cl_location[state_long]" value="" /> <input type="hidden" id="gmw-cl-zipcode" name="gmw_cl_location[zipcode]" value="" /> <input type="hidden" id="gmw-cl-country" name="gmw_cl_location[country]" value="" /> <input type="hidden" id="gmw-cl-country-long" name="gmw_cl_location[country_long]" value="" /> <input type="hidden" id="gmw-cl-org-address" name="gmw_cl_location[address]" value="" /> <input type="hidden" id="gmw-cl-formatted-address" name="gmw_cl_location[formatted_address]" value="" /> <input type="hidden" id="gmw-cl-lat" name="gmw_cl_location[lat]" value="" /> <input type="hidden" id="gmw-cl-lng" name="gmw_cl_location[lng]" value="" /> <input type="hidden" id="gmw-cl-action" name="gmw_cl_action" value="post" /> </form> </div><script type="text/javascript"> jQuery(document).ready(function($) { //declare new map options array for form ID 1 gmwMapOptions['1'] = []; gmwMapOptions['1']['styles'] = [ { "featureType": "landscape", "stylers": [ { "color": "#f2f2f2" } ] }, { "featureType": "road", "stylers": [ { "saturation": -100 }, { "lightness": 45 } ] }, { "featureType": "road.highway", "stylers": [ { "visibility": "simplified" } ] }, { "featureType": "road.arterial", "elementType": "labels.icon", "stylers": [ { "visibility": "off" } ] }, { "featureType": "administrative", "elementType": "labels.text.fill", "stylers": [ { "color": "#444444" } ] }, { "featureType": "transit", "stylers": [ { "visibility": "off" } ] }, { "featureType": "poi", "stylers": [ { "visibility": "off" } ] } ] }); </script> <style type="text/css"> h2.frq-main-title{ font-size: 18px; } .hrf-entry{ border:none !important; margin-bottom: 0px !important; padding-bottom: 0px !important; } .hrf-content{ display:none; color: #444444; background: #ffffff; font-size: 14px; padding: 10px; padding-left: 50px; word-break: normal; } h3.hrf-title{ font-size: 18px ; color: #444444; background: #ffffff; padding: 10px ; padding-left: 50px; margin: 0; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; outline-style:none; } .hrf-title.close-faq{ cursor: pointer; } .hrf-title.close-faq span{ width: 30px; height: 30px; display: inline-block; position: relative; left: 0; top: 8px; margin-right: 12px; margin-left: -42px; background: #444444 url(https://entwickler.de/wp-content/plugins/html5-responsive-faq/images/open.png) no-repeat center center; } }.hrf-title.open-faq{ } .hrf-title.open-faq span{ width: 30px; height: 30px; display: inline-block; position: relative; left: 0; top: 8px; margin-right: 12px; margin-left: -42px; background: #444444 url(https://entwickler.de/wp-content/plugins/html5-responsive-faq/images/close.png) no-repeat center center; } .hrf-entry p{ } .hrf-entry ul{ } .hrf-entry ul li{ }</style><div id='wpd-editor-source-code-wrapper-bg'></div><div id='wpd-editor-source-code-wrapper'><textarea id='wpd-editor-source-code'></textarea><button id='wpd-insert-source-code'>Insert</button><input type='hidden' id='wpd-editor-uid' /></div> <div id="wpfront-scroll-top-container"> <img src="https://entwickler.de/wp-content/plugins/wpfront-scroll-top/images/icons/1.png" alt="" /> </div> <script type="text/javascript">function wpfront_scroll_top_init() {if(typeof wpfront_scroll_top == "function" && typeof jQuery !== "undefined") {wpfront_scroll_top({"scroll_offset":100,"button_width":0,"button_height":0,"button_opacity":0.80000000000000004,"button_fade_duration":200,"scroll_duration":400,"location":1,"marginX":20,"marginY":20,"hide_iframe":false,"auto_hide":false,"auto_hide_after":2,"button_action":"top","button_action_element_selector":"","button_action_container_selector":"html, body","button_action_element_offset":0});} else {setTimeout(wpfront_scroll_top_init, 100);}}wpfront_scroll_top_init();</script> <script></script> <script type="text/javascript"> jQuery(document).ready(function ($) { //custom validation rule $.validator.addMethod("customemail", function(value, element) { return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value); }, "Sorry, I've enabled very strict email validation" ); $('#commentform').validate({ rules: { author: { required: true, minlength: 2 }, // email: { // required: true, // email: true // }, email: { required: { depends:function(){ $(this).val($.trim($(this).val())); return true; } }, customemail: true }, comment: { required: true, minlength: 1 } }, messages: { author: "Bitte geben Sie einen Namen an.", email: "Bitte geben Sie eine gültige Email-Adresse an.", comment: "Bitte geben Sie einen Kommentar an." }, errorElement: "div", errorPlacement: function (error, element) { element.after(error); } }); }); </script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushArduino.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushYaml.js?x48124'></script> <script type='text/javascript'> (function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "https://entwickler.de/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.head.appendChild( corecss ); var themecssurl = "https://entwickler.de/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css?ver=3.0.9b"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } document.head.appendChild( themecss ); })(); SyntaxHighlighter.config.strings.expandSource = '+ expand source'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; SyntaxHighlighter.defaults['pad-line-numbers'] = true; SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); // Infinite scroll support if ( typeof( jQuery ) !== 'undefined' ) { jQuery( function( $ ) { $( document.body ).on( 'post-load', function() { SyntaxHighlighter.highlight(); } ); } ); } </script> <link rel='stylesheet' id='yarppRelatedCss-css' href='https://entwickler.de/wp-content/plugins/yet-another-related-posts-plugin/style/related.css?x48124' type='text/css' media='all' /> <link rel='stylesheet' id='yarpp-thumbnails-yarpp-thumbnail-css' href='https://entwickler.de/wp-content/plugins/yet-another-related-posts-plugin/includes/styles_thumbnails.css.php?width=230&height=0&ver=4.4' type='text/css' media='all' /> <script type='text/javascript' src='https://entwickler.de/wp-content/themes/entwicklerDE/assets/js/jquery.validate.min.js?x48124'></script> <script type='text/javascript'> /* <![CDATA[ */ var wpcf7 = {"apiSettings":{"root":"https:\/\/entwickler.de\/wp-json\/contact-form-7\/v1","namespace":"contact-form-7\/v1"},"cached":"1"}; /* ]]> */ </script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/contact-form-7/includes/js/scripts.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-includes/js/jquery/jquery.form.min.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/bootstrap-for-contact-form-7/assets/dist/js/scripts.min.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/sands-jobbookmark-plugin/include/script.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/sands-jobbookmark-plugin/include/jquery.cookie.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/sands-top-article-slider/assets/top-article-slider.js?x48124'></script> <script type='text/javascript' src='//entwickler.de/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?x48124'></script> <script type='text/javascript'> /* <![CDATA[ */ var woocommerce_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/online\/ajax-und-xml-in-der-praxis-129408.html?wc-ajax=%%endpoint%%"}; /* ]]> */ </script> <script type='text/javascript' src='//entwickler.de/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?x48124'></script> <script type='text/javascript' src='//entwickler.de/wp-content/plugins/woocommerce/assets/js/jquery-cookie/jquery.cookie.min.js?x48124'></script> <script type='text/javascript'> /* <![CDATA[ */ var wc_cart_fragments_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/online\/ajax-und-xml-in-der-praxis-129408.html?wc-ajax=%%endpoint%%","fragment_name":"wc_fragments"}; /* ]]> */ </script> <script type='text/javascript' src='//entwickler.de/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js?x48124'></script> <script type='text/javascript'> /* <![CDATA[ */ var pollsL10n = {"ajax_url":"https:\/\/entwickler.de\/wp-admin\/admin-ajax.php","text_wait":"Your last request is still being processed. Please wait a while ...","text_valid":"Please choose a valid poll answer.","text_multiple":"Maximum number of choices allowed: ","show_loading":"1","show_fading":"1"}; /* ]]> */ </script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/wp-polls/polls-js.js?x48124'></script> <script type='text/javascript' src='https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=de&ver=1.0.0'></script> <script type='text/javascript'> /* <![CDATA[ */ var wpdiscuzAjaxObj = {"wc_hide_replies_text":"Antworten verbergen","wc_show_replies_text":"Antworten anzeigen","wc_msg_required_fields":"Bitte f\u00fcllen Sie die erforderlichen Felder aus","wc_invalid_field":"Nicht alle von Ihnen ausgef\u00fcllten Felder sind richtig","wc_error_empty_text":"Bitte f\u00fcllen Sie dieses Feld aus","wc_error_url_text":"Bitte \u00fcberpr\u00fcfen Sie Ihre angegebene URL","wc_error_email_text":"Bitte \u00fcberpr\u00fcfen Sie Ihre angegebene Email-Adresse","wc_invalid_captcha":"Captcha Code ist falsch","wc_login_to_vote":"Um Ihre Stimme abgeben zu k\u00f6nnen m\u00fcssen Sie angemeldet sein","wc_deny_voting_from_same_ip":"Es ist nur eine Stimmvergabe m\u00f6glich","wc_self_vote":"Eigene Kommentare k\u00f6nnen nicht bewertet werden","wc_vote_only_one_time":"Es ist immer nur eine Bewertung erlaubt","wc_voting_error":"Bewertungs-Fehler","wc_comment_edit_not_possible":"Sorry, this comment is no longer possible to edit","wc_comment_not_updated":"Tut uns leid, aber dieser Kommentar konnte leider nicht aktualisiert werden","wc_comment_not_edited":"Es wurden keine \u00c4nderungen von Ihnen vorgenommen","wc_msg_input_min_length":"Diese Eingabe ist zu kurz","wc_msg_input_max_length":"Diese Eingabe ist zu lang","wc_spoiler_title":"Spoiler Title","wc_cannot_rate_again":"You cannot rate again","wc_not_allowed_to_rate":"You're not allowed to rate here","wc_follow_user":"Follow this user","wc_unfollow_user":"Unfollow this user","wc_follow_success":"You started following this comment author","wc_follow_canceled":"You stopped following this comment author.","wc_follow_email_confirm":"Please check your email and confirm the user following request.","wc_follow_email_confirm_fail":"Sorry, we couldn't send confirmation email.","wc_follow_login_to_follow":"Please login to follow users.","wc_follow_impossible":"We are sorry, but you can't follow this user.","wc_follow_not_added":"Following failed. Please try again later.","is_user_logged_in":"","commentListLoadType":"3","commentListUpdateType":"0","commentListUpdateTimer":"180","liveUpdateGuests":"0","wordpressThreadCommentsDepth":"5","wordpressIsPaginate":"","commentTextMaxLength":"400","commentTextMinLength":"1","storeCommenterData":"100000","socialLoginAgreementCheckbox":"0","enableFbLogin":"0","enableFbShare":"0","facebookAppID":"","facebookUseOAuth2":"0","enableGoogleLogin":"0","googleClientID":"","googleClientSecret":"","cookiehash":"99163d7bc72d407b7708f308d30affee","isLoadOnlyParentComments":"0","scrollToComment":"1","commentFormView":"expanded","enableDropAnimation":"1","isNativeAjaxEnabled":"1","enableBubble":"0","bubbleLiveUpdate":"0","bubbleHintTimeout":"45","bubbleHintHideTimeout":"10","cookieHideBubbleHint":"wpdiscuz_hide_bubble_hint","bubbleShowNewCommentMessage":"0","bubbleLocation":"right_corner","firstLoadWithAjax":"0","wc_copied_to_clipboard":"Copied to clipboard!","inlineFeedbackAttractionType":"disable","loadRichEditor":"0","wpDiscuzReCaptchaSK":"6LcxnQ4TAAAAAHur2Ni10FaS0TGGqVTuK3vq0i3M","wpDiscuzReCaptchaTheme":"light","wpDiscuzReCaptchaVersion":"2.0","wc_captcha_show_for_guest":"1","wc_captcha_show_for_members":"0","wpDiscuzIsShowOnSubscribeForm":"0","wmuEnabled":"0","wmuInput":"wmu_files","wmuMaxFileCount":"1","wmuMaxFileSize":"2097152","wmuPostMaxSize":"52428800","wmuIsLightbox":"0","wmuMimeTypes":[],"wmuPhraseConfirmDelete":"Are you sure you want to delete this attachment?","wmuPhraseNotAllowedFile":"Not allowed file type","wmuPhraseMaxFileCount":"Maximum number of uploaded files is 1","wmuPhraseMaxFileSize":"Maximum upload file size is 2MB","wmuPhrasePostMaxSize":"Maximum post size is 50MB","msgEmptyFile":"File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.","msgPostIdNotExists":"Post ID not exists","msgUploadingNotAllowed":"Sorry, uploading not allowed for this post","msgPermissionDenied":"You do not have sufficient permissions to perform this action","wmuSecurity":"2d4bc35abe","wmuKeyImages":"images","wmuSingleImageWidth":"auto","wmuSingleImageHeight":"200","version":"7.0.7","wc_post_id":"129408","loadLastCommentId":"0","isCookiesEnabled":"1","dataFilterCallbacks":[],"is_email_field_required":"1","url":"https:\/\/entwickler.de\/wp-admin\/admin-ajax.php","customAjaxUrl":"https:\/\/entwickler.de\/wp-content\/plugins\/wpdiscuz\/utils\/ajax\/wpdiscuz-ajax.php","bubbleUpdateUrl":"https:\/\/entwickler.de\/wp-json\/wpdiscuz\/v1\/update","restNonce":"bbcc456f22"}; var wpdiscuzUCObj = {"msgConfirmDeleteComment":"Sind Sie sicher, dass Sie diesen Kommentar l\u00f6schen wollen?","msgConfirmCancelSubscription":"Sind Sie sicher, dass Sie Ihr Abo k\u00fcndigen wollen?","msgConfirmCancelFollow":"Are you sure you want to cancel this follow?","additionalTab":"0"}; /* ]]> */ </script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/wpdiscuz/assets/js/wpdiscuz-combo-no_quill.min.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/wpfront-scroll-top/js/wpfront-scroll-top.min.js?x48124'></script> <script type='text/javascript'> var mejsL10n = {"language":"de","strings":{"mejs.download-file":"Datei herunterladen","mejs.install-flash":"Du verwendest einen Browser, der nicht den Flash-Player aktiviert oder installiert hat. Bitte aktiviere dein Flash-Player-Plugin oder lade die neueste Version von https:\/\/get.adobe.com\/flashplayer\/ herunter.","mejs.fullscreen":"Vollbild","mejs.play":"Abspielen","mejs.pause":"Pause","mejs.time-slider":"Zeit-Schieberegler","mejs.time-help-text":"Benutze die Pfeiltasten Links\/Rechts, um 1 Sekunde vorzuspringen, und die Pfeiltasten Hoch\/Runter, um 10 Sekunden vorzuspringen.","mejs.live-broadcast":"Live-\u00dcbertragung","mejs.volume-help-text":"Pfeiltasten Hoch\/Runter benutzen, um die Lautst\u00e4rke zu regeln.","mejs.unmute":"Laut schalten","mejs.mute":"Stumm","mejs.volume-slider":"Lautst\u00e4rkeregler","mejs.video-player":"Video-Player","mejs.audio-player":"Audio-Player","mejs.captions-subtitles":"Beschriftungen\/Untertitel","mejs.captions-chapters":"Kapitel","mejs.none":"Keine","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanisch","mejs.arabic":"Arabisch","mejs.belarusian":"Wei\u00dfrussisch","mejs.bulgarian":"Bulgarisch","mejs.catalan":"Katalanisch","mejs.chinese":"Chinesisch","mejs.chinese-simplified":"Chinesisch (Vereinfacht)","mejs.chinese-traditional":"Chinesisch (Traditionell)","mejs.croatian":"Kroatisch","mejs.czech":"Tschechisch","mejs.danish":"D\u00e4nisch","mejs.dutch":"Niederl\u00e4ndisch","mejs.english":"Englisch","mejs.estonian":"Estnisch","mejs.filipino":"Filipino","mejs.finnish":"Finnisch","mejs.french":"Franz\u00f6sisch","mejs.galician":"Galicisch","mejs.german":"Deutsch","mejs.greek":"Griechisch","mejs.haitian-creole":"Haitianisches Kreolisch","mejs.hebrew":"Hebr\u00e4isch","mejs.hindi":"Hindi","mejs.hungarian":"Ungarisch","mejs.icelandic":"Isl\u00e4ndisch","mejs.indonesian":"Indonesisch","mejs.irish":"Irisch","mejs.italian":"Italienisch","mejs.japanese":"Japanisch","mejs.korean":"Koreanisch","mejs.latvian":"Lettisch","mejs.lithuanian":"Litauisch","mejs.macedonian":"Mazedonisch","mejs.malay":"Malaiisch","mejs.maltese":"Maltesisch","mejs.norwegian":"Norwegisch","mejs.persian":"Persisch","mejs.polish":"Polnisch","mejs.portuguese":"Portugiesisch","mejs.romanian":"Rum\u00e4nisch","mejs.russian":"Russisch","mejs.serbian":"Serbisch","mejs.slovak":"Slowakisch","mejs.slovenian":"Slowenisch","mejs.spanish":"Spanisch","mejs.swahili":"Suaheli","mejs.swedish":"Schwedisch","mejs.tagalog":"Tagalog","mejs.thai":"Thail\u00e4ndisch","mejs.turkish":"T\u00fcrkisch","mejs.ukrainian":"Ukrainisch","mejs.vietnamese":"Vietnamesisch","mejs.welsh":"Walisisch","mejs.yiddish":"Jiddisch"}}; </script> <script type='text/javascript' src='https://entwickler.de/wp-includes/js/mediaelement/mediaelement-and-player.min.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-includes/js/mediaelement/mediaelement-migrate.min.js?x48124'></script> <script type='text/javascript'> /* <![CDATA[ */ var _wpmejsSettings = {"pluginPath":"\/wp-includes\/js\/mediaelement\/","classPrefix":"mejs-","stretching":"responsive"}; /* ]]> */ </script> <script type='text/javascript' src='https://entwickler.de/wp-includes/js/mediaelement/wp-mediaelement.min.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/js/plugins.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/js/html5shiv.min.js?x48124'></script> <script type='text/javascript'> /* <![CDATA[ */ var jmagzoption = {"ajaxurl":"https:\/\/entwickler.de\/wp-admin\/admin-ajax.php","copyclipboard":" URL kopieren f\u00fcr clipboard","shareto":"Artikel teilen hit","gacode":"","usezoom":"","ismobile":"","commentscript":"wordpress","fbapps":"","isie":"","postid":"129408","isblog":"1"}; /* ]]> */ </script> <script type='text/javascript' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/js/main.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/themes/entwicklerDE/public//js/zeroclipboard/ZeroClipboard.min.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-content/themes/entwicklerDE/public/js/ajax-post.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-includes/js/comment-reply.min.js?x48124'></script> <script type='text/javascript' src='https://entwickler.de/wp-includes/js/wp-embed.min.js?x48124'></script> <script type='text/javascript'> /* <![CDATA[ */ var gmwSettings = {"general_settings":{"google_api":"AIzaSyCickEb19-foUuLJEZxMDN06WzrSJPaqM0","js_geocode":"1","language_code":"DE","country_code":"DE","results_page":"191273","url_px":"gmw_","auto_locate":false},"post_types_settings":{"edit_post_zoom_level":"7","edit_post_latitude":"40.7115441","edit_post_longitude":"-74.01348689999998","post_types":["jobpost"]}}; var gmwMapOptions = []; /* ]]> */ </script> <script type='text/javascript' src='https://entwickler.de/wp-content/plugins/geo-my-wp/assets/js/gmw.js?x48124'></script> <script type="text/javascript"> </script> </body> </html>