XML-Dateien mittels XML-Dom bearbeiten

Autor: Helma Spona
Betrifft: VBA, XML, MSXML-DOM
Systemanforderungen: VBA-Host-Anwendung + Internet Explorer 5 oder höher

Download: PDF-Version

XML ist zurzeit in aller Munde. Nicht nur dass es ein wesentlicher Teil der .Net-Strategie von Microsoft ausmacht, auch im Alltag von Office- und Datenbankentwicklern können XML-Dateien sinnvoll eingesetzt werden. Eine Möglichkeit XML-Dateien zu lesen und zu schreiben ist das XML-DOM, das hier vorgestellt werden soll.

Anwendungsmöglichkeiten und Systemvoraussetzungen

XML-Dateien können eingesetzt werden, um Programmeinstellungen speichern, Daten für die Verwendung in anderen Anwendungen zu exportieren oder auch Daten in die Datenbank zu importieren. Gerade in Access spielt die Speicherung von Programmeinstellungen in externen Dateien zwar eine untergeordnete Rolle, weil dazu sehr gut auch Tabellen verwendet werden können, dennoch macht dies in Einzelfällen Sinn, nämlich dann, wenn die Einstellungen auch von anderen Programmen genutzt werden sollen.

Einlesen lässt sich eine XML-Datei natürlich auch als ganz normale Textdatei. Allerdings ist die Ermittlung der Tags und Attribute dann mit sehr viel Aufwand verbunden. Besser ist da die Möglichkeit über das XML-DOM auf die einzelnen XML-Nodes und ihre Attribute zuzugreifen.

Was ist XML?

Eine XML-Datei besteht ähnlich wie HTML-Dateien aus einzelnen Tags, die in spitze Klammern eingefasst werden. Innerhalb der Tags können Werte oder wieder andere Tags stehen. Zudem kann ein Tag Attribute enthalten, die innerhalb des öffnenden Tags definiert werden. Der Ausdruck <export format=“excel5″>daten.xls</export> stellt beispielsweise einen gültigen XML-Tag dar. Dabei ist daten.xls der Inhalt oder Wert des Tags und excel5 der Wert des Attributs format. XML-Dateien sind hierarchisch geordnet. Das heißt Tags können ineinander verschachtelt werden. Gültig ist eine XML-Datei allerdings nur dann, wenn es auf oberster Ebene nur einen Tag gibt, dem alle anderen untergeordnet sind. Dieser oberste Tag wird Wurzelelement oder Root-Element genannt.

XML ist ein W3C-Standard, genau wie das XML DOM. Dabei handelt es sich um das Objektmodell in dem eine XML-Datei dargestellt werden kann. Es verfügt über Methoden und Eigenschaften, um Elemente der XML-Datei auszulesen oder zu ändern. Ein XML-Tag oder ein Wert des Tags wird im DOM als XML-Node-Objekt bezeichnet. Jedes Element der XML-Datei, egal ob es sich um einen Tag oder einen Textwert handelt, wird auch als Knoten bezeichnet.

Um das XML-DOM zum Zugriff auf die XML-Datei verwenden zu können, ist ein ActiveX-Objekt erforderlich, dass der Internet Explorer 5 und höher bereits mitbringt, nämlich das MSXML-Objekt. Dieses wird nachfolgend zum Lesen der XML-Datei eingesetzt. Damit das problemlos und einfach funktioniert muss in der Datenbank ein Verweis auf die Objektbibliothek Microsoft XML, Version 2.0 gesetzt werden, der über Extras/Verweis in der Modulansicht oder Entwicklungsumgebung erstellt werden kann.

Eine XML-Datei lesen

Da eine XML-Datei einen hierarchischen Aufbau hat und nach dem Einlesen der Datei nicht auf Anhieb zu ermitteln ist, wie viele untergeordnete Knoten der Wurzelknoten hat und wie tief die Verschachtelung ist, lässt sich eine XML-Datei nur rekursiv auslesen.

Für jeden Knoten kann dazu über die hasChildNodes-Methode ermittelt werden, ob er untergeordnete Knoten hat. Wenn ein Knoten erreicht ist, der keine untergeordneten Knoten hat, wird die Prozedur einfach nicht mehr aufgerufen.

Bevor die Knoten rekursiv durchlaufen werden können, muss aber zunächst einmal das XML-DOM-Objekt erzeugt und die Datei geladen werden. Das erledigt im Listing 1 die Prozedur XMLLesen. Sie definiert zunächst die benötigten Variablen xmlRoot und xmlDoc. Die Variable xmlRoot soll das Wurzelelement der Datei speichern und muss daher den Typ MSXML.IXMLDOMNode haben. Dieses Objekt stellt ein allgemeines Node-Objekt dar, dem auch speziellere Node-Objekte zugewiesen werden können. Dies können bspw. XML-Elemente wie normale Tags, Textelemente wie die Inhalte von Tags, Kommentare oder auch XML-Attribute sein. Die Variable xmlDoc stellt das XML-DOM dar. Mit dem Schlüsselwort New wird es zunächst als leeres DOM erzeugt. Eventuell muss New durch CreateObject ersetzt werden

In älteren VBA-Versionen, in denen der New-Operator noch nicht zur Verfügung steht muss das DOMDocument-Objekt mit den folgenden Anweisungen erzeugt werden.

Dim xmlDoc As MSXML.DOMDocument
Set xmlDoc = createObject("MSXML.DOMDocument")

Wenn das Objekt erzeugt ist, kann die Methode Load verwendet werden, um eine XML-Datei zu laden. Liegt der zu lesende Code nicht in Dateiform vor, kann dieser Code ebenfalls eingelesen werden, nämlich über die LoadXML-Methode. Kann der Code bzw. die Datei eingelesen werden, wird dadurch das DOMDocument-Objekt gefüllt. Sollte der einzulesende Text oder die Datei keinen gültigen XML-Code enthalten, tritt allerdings beim Einlesen des Codes ein Laufzeitfehler auf.

Das Wurzelelement kann nach dem Einlesen über die documentElement-Methode ermittelt werden, dieses wird dann an die Prozedur ZweigLesen übergeben. Sie durchsucht die Datei rekursiv und gibt Namen und Werte der Knoten im Direktfenster aus.

Listing 1: Einlesen einer XML-Datei

Const strPFAD = "C:\TreeView_XML_0402\"
Sub XMLLesen()
Dim strFilename As String
Dim xmlRoot As MSXML.IXMLDOMNode
Dim xmlDoc As New MSXML.DOMDocument
strFilename = "buecher.xml"
xmlDoc.Load (strPFAD & strFilename)
Set xmlRoot = xmlDoc.documentElement()
ZweigLesen xmlRoot
Set xmlRoot = Nothing
Set xmlDoc = Nothing
End Sub

Wie jede rekursive Prozedur besteht auch die hier verwendete aus zwei Teilen. Der eine wird ausgeführt, wenn der aktuelle XML-Knoten den Knotentyp NODE_ELEMENT hat. In diesem Fall handelt es sich um einen XML-Tag und nicht nur um einen Kommentar oder den Inhalt eines Tags.

Hinweis:

Ob diese Prüfung sinnvoll ist, hängt vom Zweck der Prozedur ab. Wenn nur Knotenname und Werte ausgegeben werden sollen, ist dies notwendig. Im Beitrag zum TreeView-Steuerelement wird eine Abwandlung der Prozedur verwendet, wo eine andere Bedingung definiert ist. In jedem Fall muss der erste Teil der rekursiven Prozedur unabhängig davon ausgeführt werden, ob es untergeordnete Elemente gibt.  Wenn im ersten Teil der Prozedur die Prozedur wieder aufgerufen wird, erfolgt die Ausgabe von unten nach oben, das heißt das letzte Element wird zuerst ausgegeben.

Handelt es sich um einen XML-Tag, wird geprüft ob es das Wurzelelement ist. Wenn nicht wird der Name des Elements mit der nodeName-Eigenschaft ausgegeben.  Als nächstes wird dann geprüft, ob es für den XML-Tag einen Inhalt gibt. Auch Textinhalte werden als Node-Objekte behandelt. Das heißt, nur wenn die Methode hasChildNodes den Wert true liefert kann das Element einen Text haben. Dies ist in der Regel das erste untergeordnete Element, das mit der firstChild-Eigenschaft ermittelt werden kann. Handelt es sich dabei um ein Textelement, gibt die Eigenschaft die Konstante NODE_TEXT zurück. In diesem Fall soll der Wert des ersten untergeordneten XML-Elements ausgegeben werden, wenn nicht, eine leere Zeichenkette. Im zweiten Teil der Prozedur wird nun geprüft, ob das als Parameter übergebene XML-Element untergeordnete Knoten hat. Wenn ja, wird die ChildNodes-Auflistung in einer Schleife durchlaufen und die Prozedur für jeden untergeordneten Knoten erneut aufgerufen.

Listing 2: Rekursives lesen der XML-Knoten

Sub ZweigLesen(xmlNode As MSXML.IXMLDOMNode)
Dim xmlTmp As MSXML.IXMLDOMNode
Dim xmlTmpElem As MSXML.IXMLDOMElement
If xmlNode.nodeType = NODE_ELEMENT Then
Set xmlTmpElem = xmlNode
If xmlTmpElem.baseName <> _
xmlNode.ownerDocument.documentElement.baseName Then
Debug.Print xmlTmpElem.nodeName;
If xmlTmpElem.hasChildNodes Then
If xmlTmpElem.firstChild.nodeType = NODE_TEXT Then
Debug.Print ":" & xmlTmpElem.firstChild.nodeValue
Else
Debug.Print ""
End If
Else
Debug.Print ""
End If
End If
End If
If xmlNode.hasChildNodes = True Then
For Each xmlTmp In xmlNode.childNodes()
ZweigLesen xmlTmp
Next xmlTmp
End If
End Sub

XML-Dateien ändern


Das XML-DOM kann allerdings nicht nur zum Lesen der XML-Dateien verwendet werden, es stellt auch eine Save-Methode zur Verfügung mit der die XML-Datei gespeichert werden kann. Diese kann zudem vorher geändert und ergänzt werden. Die Prozeduren  in Listing 3 zeigen, wie ein Datensatz an eine bestehende XML-Datei angehängt werden kann.

Jeder Datensatz wird dabei durch einen <buch>-Knoten dargestellt, für den über das id-Attribut ein eindeutiger Schlüssel definiert ist. Um einen neuen Datensatz anzufügen, muss also zunächst der letzte Schlüssel ermittelt und der nächste berechnet werden. Dazu wird die Datei eingelesen und wieder das Wurzelelement ermittelt. Hat es untergeordnete Elemente, sind Datensätze vorhanden. In diesem Fall wird über die lastChild-Eigenschaft das letzte Element zurückgegeben und es wird geprüft, ob dieses Element Attribute hat. Die Attribute werden in der Attributs-Auflistung verwaltet, deren length-Eigenschaft ihre Anzahl angibt. Enthält der XML-Tag Attribute, wird mit der Methoode getNamedItem das id-Attribut zurückgegeben und dessen Wert über die nodeValue-Eigenschaft in der Variablen strTmp gespeichert. Wenn es kein id-Attribut gibt, kommt es dabei jedoch zu einem Laufzeitfehler, der mit On Error Resume Next ignoriert wird. In diesem Fall wird als Nummer der Wert 1 ermittelt. Gibt es das Attribut wird der Wert nach dem Zeichen # ermittelt in eine Zahl konvertiert und 1 dazu addiert. Dies ist dann die Nummer für den neuen Datensatz.

Anschließend wird der neue Datensatz eingefügt. Dazu muss zunächst das übergeordnete <buch>-Element erzeugt werden. Das geschieht, wie auch bei den untergeordneten Elementen über die CreateElement-Methode des DOMDocument-Objekts. Das so erzeugt Element existiert nun zwar, ist jedoch noch nicht in die Knotenhierarchie eingeordnet, sondern existiert quasi freischwebend im XML-DOM. Mit der AppendChild-Methode kann es dann an das übergeordnete Element angehängt werden. Für die einzelnen Tags <titel>, <autor> etc. ist dies das <buch>-Element. Das <buch>-Element wird hingegen an das Wurzelelement der Datei angehängt.

Bevor das jedoch passiert wird noch das Attribut erzeugt. Attribute können analog zur Methode createElement mit der createAttribute-Methode erzeugt werden. Deren Wert lässt sich dann über die Eigenschaft Value bestimmen. Um das Attribut dem XML-Tag hinzuzufügen, wird es der setNamedItem-Methode übergeben. Mit Aufruf der Save-Methode wird die Datei dann gespeichert.

Listing 3: Hinzufügen von Datensätzen zur XML-Datei

Sub Aufruf()
DatensatzAnfuegen strPFAD & "buecher.xml", "3815821762", _
"Helma Spona", "Das Große Buch Access 2002 Programmierung", "40,88"
End Sub

Sub DatensatzAnfuegen(strDatei As String, strISBN As String, strAutor As String, strTitel As String, strPreis As String)
'ID ermitteln
Dim xmlRoot As MSXML.IXMLDOMNode
Dim xmlNode As MSXML.IXMLDOMNode
Dim xmlDoc As New MSXML.DOMDocument
Dim xmlElem As MSXML.IXMLDOMElement
Dim xmlElem2 As MSXML.IXMLDOMElement
Dim xmlAttr As MSXML.IXMLDOMAttribute
Dim lngID As Long
Dim bytPos As Byte
Dim strTmp As String

xmlDoc.Load (strDatei)
Set xmlRoot = xmlDoc.documentElement
If xmlRoot.hasChildNodes Then
Set xmlNode = xmlRoot.lastChild()
If xmlNode.Attributes.length > 0 Then
On Error Resume Next
strTmp = xmlNode.Attributes.getNamedItem("id").nodeValue
bytPos = InStr(1, strTmp, "#", vbTextCompare)
If bytPos > 0 Then
strTmp = Mid(strTmp, bytPos + 1)
End If
If strTmp <> "" Then
lngID = Val(strTmp) + 1
Else
lngID = 1
End If
End If
Else
lngID = 1
End If

'Datensatz anfügen
Set xmlElem = xmlDoc.createElement("buch")
Set xmlElem2 = xmlDoc.createElement("ISBN")
xmlElem2.Text = strISBN
xmlElem.appendChild xmlElem2
Set xmlElem2 = xmlDoc.createElement("titel")
xmlElem2.Text = strTitel
xmlElem.appendChild xmlElem2
Set xmlElem2 = xmlDoc.createElement("autor")
xmlElem2.Text = strAutor
xmlElem.appendChild xmlElem2
Set xmlElem2 = xmlDoc.createElement("preis")
xmlElem2.Text = strPreis
xmlElem.appendChild xmlElem2
'id-Attribut hinzufügen
Set xmlAttr = xmlDoc.createAttribute("id")
xmlAttr.Value = "buch#" & lngID
xmlElem.Attributes.setNamedItem xmlAttr
xmlRoot.appendChild xmlElem
'Datei speichern
xmlDoc.Save strDatei
Set xmlNode = Nothing
Set xmlRoot = Nothing
Set xmlDoc = Nothing
End Sub

Fazit

Schreiben und lesen von XML-Dateien ist mit Hilfe des passenden MSXML-Dom-Objekts gar nicht schwer und eignet sich vor allem bei großen Dateien, weil der Zugriff auf die Knoten einer XML-Datei wesentlich schneller ist, das ein Textdatei sequentiell zu lesen und die Werte über entsprechenden String-Funktionen zu ermitteln. Vor allem wenn XML-Dateien zur Speicherung von Programmeinstellungen verwendet wird, lassen sich auch sehr gut im TreeView-Steuerelement als Baumstruktur darstellen, wie im Beitrag zu diesem Steuerelement noch gezeigt wird.

Rechtliche Rahmenbedingungen

Alle Inhalte wurden nach bestem Wissen und Gewissen zusammengestellt. Ich übernehme für Fehlerfreiheit allerdings keine Gewähr und hafte keinesfalls für Folgen, die sich aus Fehlern oder unsachgemäßem Gebrauch des Codes und der Inhalte ergeben.
Code und Beispiele dürfen für den privaten Gebrauch frei verwendet werden. Eine Veröffentlichung (auch auszugsweise) sowohl online wie auch auf klassischen Medien ist nur nach meiner ausdrücklichen Zustimmung möglich. Verlinkung der Artikel ist jedoch erlaubt und erwünscht, solange immer auf die Webseite und nicht die PDF-Datei verlinkt wird.

Suchmaschinenoptimierung mittels „robots.txt“

Autor: Helma Spona

Betrifft: Webdesign

Systemanforderungen: eigene Domain

Download: PDF

Mit einer kleinen Textdatei, der „robots.txt“ können Sie die Indizierung Ihrer Website durch Suchmaschinen beeinflussen. Dazu erstellen Sie einfach eine solche Textdatei und speichern Sie im Stammverzeichnis Ihrer Domain. Mit den passenden Einstellungen können Sie bspw. Verzeichnisse für die Indizierung sperren oder mit Hilfe einer zusätzlichen Sitemap-Datei angeben, wie oft die Dateien geändert werden.

Verzeichnis und Format der „robots.txt“

Die Datei „robots.txt“ ist ein Quasi-Standard, an den sich die wichtigsten Suchmaschinen halten. Daher können Sie damit auch recht gut die Indizierung Ihrer Seite steuern.
Zunächst erstellen Sie dazu eine leere Textdatei, die reinen Text (ohne Formatierungen) enthält und nennen diese Datei „robots.txt“. Ganz wichtig ist dabei, dass der Name komplett in Kleinbuchstaben geschrieben ist.
Haben Sie die Datei fertig gestellt (einschließlich der Inhalte) laden Sie diese in das Hauptverzeichnis Ihrer Domain, also das Verzeichnis in dem sich die Datei befindet, die angezeigt wird, wenn Sie „http://www.meinedomain.de“ im Browser als URL angeben.
Für jede Subdomain können Sie jedoch eine eigene „robots.txt“ erstellen und wiederum in deren Stammverzeichnis ablegen.
Heißt Ihre Domain bspw. „meinedomain.de“ und gibt es die Subdomains „www“ und „shop“ können Sie eine „robots.txt“ für die URL „www.meinedomain.de“ in dem Verzeichnis speichern, auf das die Domain verweist und eine „robots.txt“ für die Subdomain „shop.meinedomain.de“ erstellen und in dem Verzeichnis speichern, auf das die Subdomain „shop“ verweist.

Hinweis

Wichtig ist, dass Sie sich auch an den gleich noch beschriebenen Aufbau  der Datei halten und davon nicht abweichen. Schon kleine Fehler führen dazu, dass die Datei nicht von der Suchmaschine gelesen wird.

Grundlegende  Einstellungen

In der „robots.txt“ werden die Anweisungen für die Suchmaschinen in Datensätzen erfasst. Ein Datensatz umfasst dabei zwei bis beliebig viele Zeilen und wird durch eine Leerzeile von anderen Datensätzen getrennt.
Jede Zeile hat wieder einen spezifischen Aufbau. Sie beginnt entweder mit dem Schlüsselwort „User-agent“ oder mit „Disallow“. Danach folgt immer ein Doppelpunkt und ein Leerzeichen. Nach dem Leerzeichen folgt der Wert.
Kommentare können Sie zwischen den Datensätzen einfügen und mit einem „#“ gefolgt von einem Leerzeichen einleiten. Auch am Ende jeder Zeile darf ein Kommentar stehen.
Der folgende Inhalt, würde bspw. mit einem Kommentar beginnen, der definiert zu welcher Domain die Datei gehört.
Danach folgt eine Leerzeile und dann der erste und einzige Datensatz der Datei. Er beginnt mit der Angabe „User-agent“. Sie gibt die Suchmaschine an, für die die Anweisungen gelten soll. Als Wert müssen Sie den Namen des Robots angeben. Kennen Sie den nicht, oder möchten Angaben für alle Suchmaschinen machen, verwenden Sie stattdessen das Platzhalterzeichen „*“.

Hinweis

Sie können mehrere User-Agent-Angaben in einem Datensatz machen, allerdings nur dann, wenn Sie deren Namen angeben. Vewenden Sie das „*“ ist nur  eine Angabe zulässig.

In der nächsten Zeile folgt das Schlüsselwort „Disallow“.  Als Wert geben Sie hier ein Verzeichnis oder eine Datei an, die nicht indiziert werden sollen.
Diese geben Sie als relative Pfade ausgehend vom Stammverzeichnis aus.

  • / als Wert würde bedeuten, dass nichts indiziert wird.
  • /pfad/ würde bedeuten, dass das Unterverzeichnis „pfad“ nicht indiziert wird.
  • /pfad/index.html würde bedeuten, dass nur die Datei „index.html“ im Verzeichnis „pfad“ nicht indiziert wird.

Im folgenden Beispiel wird also das Unterverzeichnis „privat“ und alle darin enthaltene Dateien vom Suchrobot ignoriert.
Sie können mehrere „Disallow“-Angaben in einem Datensatz machen und somit mehrere Dateien und Verzeichnisse in einem Datensatz schützen.

Hinweis

Wenn Sie das Indizieren aller Verzeichniss explizit erlauben möchten, geben Sie keinen Wert nach „Disallow“ an, sondern bspw.
Disallow:

Beispiel

# robots.txt zu http://www.helma-spona.de
User-agent: *
Disallow: /privat/

Erweiterte Einstellungen


Momentan ist die Verabschiedung eines Webstandards im Gange, die eine verbindliche Richtlinie zur Syntax der „robots.txt“ sein wird. Einige Suchmaschinen beherrschen diese erweiterten Angaben schon, so dass Sie sie auch in der Praxis schon einsetzen können. Dabei gibt es nicht nur das Schlüsselwort „Allow“, mit dem Sie explizit auch bestimmte Verzeichnisse zum Durchsuchen erlauben können, sondern noch viele weitere Einstellungen.
Möchten Sie die Indizierung bestimmter Verzeichnisse explizit erlauben, können Sie dazu die „Allow“-Anweisung verwenden. Sie funktioniert wie „Disallow“ nur geben Sie als Wert dahinter das Verzeichnis oder die Datei an, das durchsucht werden soll. Wenn Sie bspw. das Indizieren aller Verzeichnisse bis auf „www“ verbieten möchten, können Sie dazu folgendes angeben:

Beispiel

# robots.txt zu http://www.meinedomain.de
User-agent: *
Disallow: / # verbietet erst mal alles
Allow: /www/ # erlaubt die Indizierung

Hinweis

Hier ist allerdings Vorsicht geboten. Spider, die die erweiterten Einstellungen noch nicht berücksichtigen, würden Ihre Seite gar nicht indizieren. Die großen Suchmachinen wie Google, und Yahoo kennen den „Allow“-Befehl allerdings, Bing jedoch nicht.

Mit den erweiterten Einstellungen können Sie auch verhindern, dass Seiten mit URLs indiziert werden, die ein „?“ enthalten. In diesem Fall würden Sie
Disallow: /*?
angeben. Darüber hinaus erlaubt der zukünftige Standard die Angabe einer „Sitemap“-Datei. Damit können Sie jede einzelne Seite und jedes Verzeichnis definieren, die durchsucht werden sollen und damit können Sie dann auch angeben, wie oft sich die Seiten voraussichtlich ändern werden.  Das ist eine gute Möglichkeit um zu steuern, wie häufig der Spider der Suchmaschine Ihre Seiten neu indiziert. Die „sitemap.xlm“-Datei können Sie in beliebigen Verzeichnissen ablegen. Wo sie dann liegt, geben Sie in der „robots.txt“ mit der „Sitemap“-Angabe an. Wenn Sie im Stammverzeichnis liegt und „sitemap.xlm“ heißt, geben Sie bspw. an:
Sitemap: /sitemap.xml

Sitemap-Dateien

Es gibt zwei Möglichkeiten Sitemap-Dateien zu erstellen. Sie können reine Textdateien erzeugen und dort nur eine Liste der Dateien angeben, die indiziert werden sollen, bspw.:

Beispiel

http://www.meinedomain.de/index.html
http://www.meinedomain.de/kontakt.html
http://www.meinedomain.de/service.html

Alternativ können Sie eine XML-Datei erstellen. Darin können Sie auch zusätzliche Angaben zu den Dateien machen. Wichtig ist, dass Sie die XML-Datei im utf-8-Format speichern und diese einen fest definierten Aufbau haben muss. Lediglich die nachfolgend definierten fett gedruckten Teile tauschen Sie gegen Ihre eigenen Angaben aus und ergänzen für jede Seite und URL ein Element „<url>“.

Beispiel

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>http://www.helma-spona.de/</loc>
<lastmod>2010-06-20</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.helma-spona.de/kontakt.htm</loc>
<lastmod>2010-06-20</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
...
</urlset>

Jede URL die Sie angeben, geben Sie als eigenen „<url>“-Tag an, der zwingend das Element „<loc>“ mit der URL enthalten muss. Bei Pfadangaben sollte diese mit einem „/“ enden. Optional können Sie mit den Elementen „<changefreq>“ die Häufigkeit von Änderungen und mit „<priority>“ einen Wert zwischen 0 und 1 angeben, der die Priorität im Vergleich zu anderen Seiten Ihrer Website angibt. Auch die Angabe „<lastmod>“ mit dem Datum der letzten Änderung ist optional. Allerdings müssen Sie in der Sitemap-Datei wirklich jede Seite aufführen, die indiziert werden soll. Das ist extrem aufwändig, vor allem bei umfangreichen Websites. Eine Sitemap-Datei lohnt daher nur, wenn Sie die Möglichkeit haben, diese per Skript serverseitig erstellen zu lassen.

Hinweis

Weitere Infos zur Sitemap-Datei finden Sie auch auf http://sitemaps.org/de/.

<HS>

Rechtliche Rahmenbedingungen

Alle Inhalte wurden nach bestem Wissen und Gewissen zusammengestellt. Ich übernehme für Fehlerfreiheit allerdings keine Gewähr und hafte keinesfalls für Folgen, die sich aus Fehlern oder unsachgemäßem Gebrauch des Codes und der Inhalte ergeben.
Code und Beispiele dürfen für den privaten Gebrauch frei verwendet werden. Eine Veröffentlichung (auch auszugsweise) sowohl online wie auch auf klassischen Medien ist nur nach meiner ausdrücklichen Zustimmung möglich. Verlinkung der Artikel ist jedoch erlaubt und erwünscht, solange immer auf die Webseite und nicht die PDF-Datei verlinkt wird.