Android – Kompilierfehler durch XML Layout



Als ich Neuling in der Android Programmierung war, hatte ich mich oft mit der scheinbar fehlerhaften Generierung der Layout XML-Datei herumgeschlagen.
Wenn ich die App aus Eclipse heraus starten wollte, konnte die Layout XML-Datei nicht verarbeitet werden.

Nach langer Recherche, konnte ich dann herausfinden warum dieser Fehler auftritt und wie man ihn beheben kann:
Der Fehler tritt auf, wenn man die App startet und gerade eine XML-Datei (z.B. wenn man gerade am Layout gearbeitet hat) als aktive Datei im Fenster offen hat. Weiß der Teufel, weshalb Eclipse damit nicht klar kommt und stattdessen eine Datei erzeugt, die zusätzlich .out im Dateinamen trägt.
Deshalb muss man vor jedem Starten der App erst einmal eine Java-Datei anwählen.

Ist der Fehler dann doch einmal aufgetreten, kann es sein dass die “.out”-Datei sich nicht einmal löschen lässt. Dazu muss man im Menü von Eclipse Projekt->Clean… ausführen. Jetzt kann man die leere “.out”-Datei löschen und zur Sicherheit noch einmal Project->Clean… ausführen. Hat man jetzt eine Java-Datei offen, sollte alles wieder wie gewohnt laufen.

Passwort vergessen beim wordpress Blog



Sollten Sie Ihr Passwort bei einem wordpress-Blog vergessen haben und das Passwort zuschicken nicht funktioniert: Keine Panik. Sie müssen nicht alles neu installieren.

Voraussetzung für folgendes Vorgehen ist allerdings, dass Sie Zugriff auf die Datenbank haben. Das Heißt, Sie müssen Daten lesen und neue Einträge erstellen dürfen.

Verbinden Sie sich nun mit der Datenbank und wählen Sie die Tabelle mit den Benutzern aus. Je nachdem, wie Sie Ihre Datenbank konfiguriert haben, ist der Name anders. Er endet allerdings mit users. Bei mir ist es die letzte Tabelle (alphabetisch geordnet).
In dieser Tabelle fügen Sie einen neuen Eintrag ein.
Sie müssen lediglich Daten für die Spalte user_login und user_pass eingeben. Den Rest können Sie leer lassen. Jetzt notieren Sie sich den Wert der Spalte ID von dem ebend eingefügten Datensatz.
Wichtig: In die Spalte für das Passwort muss das Passwort allerdings verschlüsselt eingefügt werden. Sie müssen also den md5-Schlüssel für Ihr Passwort generieren und diesen dort eintragen.

Haben Sie das geschafft, müssen Sie letztlich noch die Tabelle usermeta bearbeiten. Bei mir befindet sich diese Tabelle direkt darüber. Auch hier müssen neue Datensätze eingefügt werden.
Suchen Sie die Spalte für den Administrator. Dazu schauen Sie in der Tabelle users und notieren sich den Wert für ID von dem Administrator. Die Einstellungen für den Administrator haben die user_id des ebend notierten Wertes.
Wichtig sind die Spalten, bei dem die Spalte meta_key den Wert user_level enthält und die Spalte, die den Wert capabilities enthält.
Am Besten kopieren Sie diese Spalten und lassen den Wert für umeta_id frei, tragen in die Spalte user_id den zu Beginn notierten Wert ein (aus der users Tabelle). Bei meta_value lassen Sie die Werte, wie Sie waren.

Nun haben Sie einen neuen Administrator geschaffen, der von jedem das Passwort ändern darf. Loggen Sie ich nun mit dem neuen Benutzer ein und ändern unter Benutzer das Passwort für den offiziellen Administrator. Nun haben Sie den Namen und das Passwort für den Administrator wieder und können den neuen nun wieder löschen.

XML – Grundlagen


Beschreibung

XML ist die Kurzform von Extensible Markup Language, was so viel heißt, wie: Erweiterbare Auszeichnungssprache. Die erste Spezifikation, die für das XML erschien, kam von dem World Wide Web Consortium (W3C) am 10. Februar 1998. Darin wurde XML als eine Metasprache definiert, die lediglich inhaltliche Daten für die weitere Verwendung enthält. Das Ziel von XML ist eine einfache Datenverwaltung, Platformunabhängigkeit sowie die Trennung von Inhalt und Design.
In welchem Maße die Daten in der XML-Datei abgelegt werden, kann der Entwickler selbst entscheiden. Da jeder seine eigenen XML-Tags definieren kann, ist es vom Entwickler abhängig, wie einfach die Datenspeicherung ist.
Platformunabhängig ist XML insofern, dass es lediglich eine ASCII-Textdatei ist, die jedes System (in dem Falle sogar der Mensch) lesen kann.

Ein einfaches Beispiel wäre das Folgende:
<?xml version="1.0" encoding="UTF-8"?>
<planet name="erde">
<land name="Frankreich" hauptstadt="Paris">
<stadt einwohnerzahl="2193030" flaeche="105.40">Paris</stadt>
</land>
<land name="Deutschland" hauptstadt="Berlin">
<stadt einwohnerzahl="3500000" flaeche="891.85">Berlin</stadt>
<stadt einwohnerzahl="1330440" flaeche="310.43">München</stadt>
</land>
</planet>

Die Struktur beginnt mit der Angabe, um welchen Dateityp mit der Version und welchem Zeichensatz es sich handelt. Nur so kann man sichergehen, dass die Datei als eine XML-Datei auch erkannt wird.
Das wohl prominenteste Beispiel einer XML-Struktur sind HTML-Seiten:
<html>
<head>
<title>Dies ist der Titel</title>
</head>
<body>
<p>Hier steht ein Teil des Seiten-Inhaltes...</p>
<p>... und hier der Rest</p>
</body>
</html>

XSL

XML kann ebenfalls dazu genutzt werden, um Dokumente, wie z.B. HTML-Dateien oder PDF-Dateien zu generieren.
Dazu wird eine XSL-Datei (Extensible Stylesheet Language) benötigt, die die dazugehörigen Formatierungen definiert.
Das folgende Beispiel erzeugt aus der obigen XML-Datei eine HTML-Datei:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Länder und Städte</title>
</head>
<body>
<xsl:for-each select="planet/land">
<h1><xsl:value-of select="@name"/></h1>
<h2>Städte:</h2>

<table>
<xsl:for-each select="current()/stadt">
<tr>
<td><xsl:value-of select="current()"/></td>
<td><xsl:value-of select="@einwohnerzahl"/></td>
<td><xsl:value-of select="@flaeche"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Führt man dieses Beispiel mit einem XSLT-Prozessor aus, so bekommt man am Ende eine HTML-Datei…

DTD

Mithilfe einer DTD-Datei (Document Type Definition) kann man festlegen, wie die Struktur der XML-Datei aussehen muss, bzw. darf.

<!ELEMENT planet (land)*>
<!-- Der planet muss dan Tag land besitzen und das beliebig oft -->
<!ELEMENT land (stadt)*>
<!-- Das land enthält stadt und das beliebig oft -->
<!ELEMENT stadt (#PCDATA)>
<!-- Die stadt darf nur Zeichenketten enthalten, z.B. Berlin -->
<!ATTLIST planet
name CDATA #REQUIRED >
<!-- Der planet muss das Attribut name besitzen -->
<!ATTLIST land
name CDATA #REQUIRED
hauptstadt CDATA #IMPLIED >
<!-- Das Land muss einen namen besitzen. Die Hauptstadt ist optional -->
<!ATTLIST stadt
einwohnerzahl CDATA #REQUIRED
flaeche CDATA #REQUIRED >
<!-- Die Stadt muss die einwohnerzahl sowie die flaeche besitzen -->

Jetzt muss man der XML-Datei noch sagen, welche DTD Datei für sie zuständig ist.
Das geschieht über die Zeile:
<!DOCTYPE planet SYSTEM "planetenLaenderStaedte.dtd">

Hierbei muss man beachten, dass die DTD-Datei den Namen “planetenLaenderStaedte.dtd” haben muss und im gleichen Verzeichnis wie die XML-Datei liegen muss.

Auch die XSL-Datei muss nun noch eingebunden werden, damit auch Einfluss auf die Ausgabe hat.

Diese Zeile muss jetzt noch in die XML-Datei eingebunden werden:
<?xml-stylesheet href="planetenLaenderStaedte.xsl" type="text/xsl"?>
<!DOCTYPE planet SYSTEM "planetenLaenderStaedte.dtd">

Die finale XML-Datei sieht dann folgendermaßen aus:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="planetenLaenderStaedte.xsl" type="text/xsl"?>
<!DOCTYPE planet SYSTEM "planetenLaenderStaedte.dtd">
<planet name="erde">
<land name="Deutschland" hauptstadt="Berlin">
<stadt einwohnerzahl="2193030" flaeche="105,40">Paris</stadt>
</land>
<land name="Frankreich" hauptstadt="Paris">
<stadt einwohnerzahl="3500000" flaeche="891.85">Berlin</stadt>
<stadt einwohnerzahl="1330440" flaeche="310,43">München</stadt>
</land>
</planet>

Dabei muss man darauf achten, dass die DTD-Datei auch im gleichen Verzeichnis, wie die XML-Datei liegt, sonst wird diese nicht gefunden.

Die Zukunft von XML

XML erfreut sich aufgrund der Einfachheit der Datenspeicherung immer größerer Beliebtheit. Hier sind sich sogar Vertreter der Unix-Welt sowie Microsoft einig und setzen große Stücke auf die Datenspeicherung durch XML.
Obwohl HTML auf XML aufbaut, sollte man für die Web-Programmierung kein reines XML bzw. XSL verwenden. Beispielsweise kann der Der Internet Explorer XML erst seit der Version 5 und der Netscape Navigator seit der Version 6.0 interpretieren. Da allerdings durchaus noch ältere Browser im Umlauf sind, sollte man auf XML allerdings verzichten. Außerdem stößt man des Öfteren auf die Problematik, dass XML-Transformationen in manchen Browser funktionieren, in anderen Browsern allerdings nicht.