Web Development

Pagemap - Beschreibung einer Datenbank-gesteuerten Web-Site in XML

Automatische Erzeugung von Google-Sitemaps

Google bietet schon seit Längerem Webmastern die Möglichkeit die Struktur ihrer Web-Site der Suchmaschine zu melden, damit zum Beispiel Änderungen schneller erfasst und gefunden werden können. Zu diesem Zweck wurde das Sitemap-Protokoll entwickelt, dessen Basis eine maschinenlesbare XML-Datei darstellt, in dem die einzelnen URL's einer Web-Site erfasst sind.

Das Format ist derart erfolgreich, dass Yahoo und sogar Microsoft auf den Zug aufgesprungen sind und Ende 2006, gemeinsam mit Google, das Sitemap-Protokoll in der Version 0.9 auf www.sitemap.org veröffentlicht haben. Dort kann man sich auch die aktuell gültige Spezifikation ansehen.

Einreichen kann man die Sitemaps bei Google über die Webmaster-Tools. Bei Yahoo gelingt dies über den im Beta-Status befindlichen Yahoo Site Explorer. In beiden Fällen benötigt man bei der jeweiligen Suchmaschine ein Konto und muss eine Verifizierungsdatei auf den eigenen Web-Server legen. Microsoft bietet hingegen für seine Suchmaschine search.live.com bzw. den Crawler MSNBot noch keine Möglichkeit eine Sitemap einzureichen.

Die Sitemap-Struktur

Das Sitemap-Format ist recht simpel, denn es besteht nur aus einer Handvoll XML-Tags und ist ausgezeichnet dokumentiert:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
    <loc>http://www.example.com/</loc>
    <lastmod>2005-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
   </url>  
</urlset>

Alles beginnt mit dem Root-Tag urlset, das über das Attribut xmlns auf den Protokollstandard verweist. Unterhalb dieses Wurzelelements können unendlich viele url-Tags definiert werden. Jedes einzelne stellt eine URL der zu beschreibenden Web-Site dar. Zur näheren Beschreibung einer URL gibt es unterhalb von url wiederum 4 Tags, die zum Teil optional sind:

Tag Beschreibung optional
loc URL der Seite Nein
lastmod Datum der letzten Änderung Ja
changefreq Änderungshäufigkeit (always, hourly, daily, weekly, ...) Ja
priority Priorität gegenüber anderen URL der Web-Site Ja

Das war es im Prinzip auch schon. Mit dieser Struktur, die man über verschiedene Ebenen verschachteln kann, ist jeder Web-Master in der Lage seine Web-Site in maschinenlesbarer Form abzubilden.

In der Praxis ist es aber eher mühsam bei jeder Änderung der Seitenstruktur die XML-Datei anzupassen. Vor allem, wenn man eine sehr rege genutzte Seite wie ein Blog betreibt. Aus diesem Grund bietet unter anderem Google einen Sitemap-Generator der einem diese Arbeit etwas erleichtern kann. Desweiteren gibt es inzwischen zahllose freie oder kommerzielle Tools, die eine Web-Site scannen und Sitemap-Dateien erzeugen können.

Alle diese Tools haben aber ihre Nachteile. Zum Teil sind sie, wie der Sitemap-Generator von Google, in Sprachen wie Python geschrieben, die zunächst die Installation von diversen Software-Paketen erfordern, oder sie kommen nur mit starren HTML-Strukturen zurecht. Ein wirklich dynamisches System für Datenbank-gestützte Blog-Systeme wie zerbit.de zum Beispiel, ist mir noch nicht untergekommen.

Aus diesem Grund habe ich die Pagemap-Struktur entwickelt, die in der Lage ist, eben auch dynamisch erzeugte Web-Site zu beschreiben und als Basis für automatisch generierte Sitemap-Dateien dienen kann.

Pagemap - Die Alternative für Generatoren

In einer Sitemap-Datei muss für jede zu indizierende URL ein Eintrag vorhanden sein. Betreibt man nun beispielsweise Datenbank-gestütztes Blog dessen Beiträge über ein und dieselbe URL, aber mit unterschiedlichen Parametern aufgerufen werden, so müsste man, bei 20 Beitrags-Datensätzen, 20 einzelne Einträge in der Sitemap generieren.

Auf dieser Web-Site ist dies z.B. der Fall. Die einzelnen Artikel sind u.a. über die URL http://www.zerbit.de/artikel/show.aspx?id=XXX aufrufbar, wobei die ID für die Nummer des aus der Datenbank abzurufenden Artikels steht. Wenn ich nun, wie gerade, einen neuen Artikel schreibe, dann müsste ich nach der Fertigstellung entweder die Sitemap manuell ergänzen oder einen Generator über die Site laufen lassen.

Weil ich für die Anzeige der Artikel und Beiträge schon alles weitgehend automatisiert hatte, war es für mich nicht einzusehen, wegen der Sitemap noch einmal Hand anzulegen. Ein Automatismus musste her; eine Definition meiner Web-Site unter Einbeziehung der dynamisch generierten URL's...

Definition einer Datenbank-gestützten Web-Site in XML

Googles Idee eine Web-Site mit XML zu beschreiben ist ja bestechend, also verfolgte ich diesen Ansatz, allerdings etwas hierarchischer, denn eine Site besteht meist aus mehreren Ebenen, angefangen mit der Startseite und das ist in einer Suchmaschinen-Sitemap nicht abbildbar. Pate für die neue Struktur stand dabei auch Microsofts ASP.NET Sitemap-Modell. Mithilfe dieser XML-Struktur kann man ASP.NET-Seiten hierarchisch beschreiben und daraus z.B. automatisch normale Sitemaps für Webs generieren.

Eine Pagemap-XML-Struktur geht allerdings noch einen Schritt weiter, denn in ihr können, neben starren HTML-Seiten, auch Definitionen zu Datenbank-gestützten URL's abgelegt werden, d.h. man definiert lediglich die Parameter für einen Datenbankzugriff und den Rest erledigt ein Stückchen Code das die Datensätze iteriert.

Beginnen wir mit dem Wurzelelement. Die heißt schlicht pagemap und besitzt nur ein Attribut namens site, das den Namen der Web-Site aufnimmt:

<?xml version="1.0" encoding="iso-8859-1"?>
<pagemap site="www.meinblog.de">
  ...
</pagemap>

Unterhalb der Wurzel können nun einzelne Seiten mithilfe des Tags page abgelegt werden:

<?xml version="1.0" encoding="iso-8859-1"?>
<pagemap site="www.meinblog.de">
   <page>...</page>
   <page>...</page>
   ...
</pagemap>

Diese Seitendefinitionen können auch gleichzeitig die Hierarchie der Site beschreiben, wenn man sie entsprechend verschachtelt:

<?xml version="1.0" encoding="iso-8859-1"?>
<pagemap site="www.meinblog.de">
   <page>...</page>
   <page>
      <page>...</page>
      <page>...</page>
      <page>
         <page>...</page>
         <page>...</page>
      </page>
   </page>
   ...
</pagemap>

Alle page-Tags besitzen erforderliche und optionale Attribute, die die einzelnen Seiten beschreiben:

Attribute

Attribut Beschreibung optional
title Titel der Seite Nein
file relativer Pfad zur Seite Nein
type Seitentyp (static, dynamic) Nein
changefreq Änderungshäufigkeit (always, hourly, daily, weekly, monthly, yearly, never) Ja
priority Priorität gegenüber anderen Seiten der Site (Zahl zwischen 0,0 und 1,0) Ja

Dynamische Seiten (type=dynamic), geschrieben in Server-Sprachen wie ASP. ASP:NET, PHP oder ähnlichem, besitzen neben diesen Attributen weitere Unterelemente, mit denen die Datenbankanbindung beschrieben werden kann:

Unterelement Beschreibung
parameter Name des Parameters, über den die Seiten abgerufen werden (z.B. ID)
sqlselect SELECT-String mit dem die Datensätze aus der Datenbank abgerufen werden (CDATA-Abschnitt)
idfield Feldname des Schlüsselwertes der mit dem Übergabeparameter korrespondiert
titlefield Feldname des Seitentitels
datefield Feldname eines Datumsfeldes, in dem das letzte Update des Datensatzes abgelegt wird

Die pagemap-Beschreibung eines kleines Weblog könnte dann zum Beispiel so aussehen:

<?xml version="1.0" encoding="iso-8859-1"?>
<pagemap site="www.meinblog.de">

   <page title="Startseite" file="/index.asp" type="static"
         changefreq="weekly" priority="1.0">

      <page title="Beiträge" file="/weblog/index.asp" type="static"
            changefreq="weekly" priority="1.0">

         <page file="/weblog/article.asp" type="dynamic">
            <parameter>id</parameter>
            <sqlselect>
               <![CDATA[SELECT * FROM tblBeitraege ORDER BY LastUpdate DESC]]>
            </sqlselect>
            <idfield>ID</idfield>
            <titlefield>TITLE</titlefield>
            <datefield>LASTUPDATE</datefield>
         </page>

      </page>

      <page title="News-Feeds" file="/rssfeeds.asp" type="static" />
      <page title="Impressum" file="/impressum.asp" type="static" priority="0.1" />
      <page title="Kontakt" file="/kontakt.asp" type="static" />

   </page>
</pagemap>

Verarbeitung einer Pagemap

Mit dieser Struktur und mit den teils Sitemap-spezifischen Attributen ist es nun ein leichtes eine Suchmaschinen-Sitemap zu erstellen. Zum anderen kann man diese Site-Definition auch wunderbar dazu nutzen, eine normale, grafische Sitemap, wie sie viele Web-Sites anbieten, automatisch zu erzeugen. Die einzige Änderung die man manuell durchführen muss ist, wenn man weitere statische Seite in die Site einfügt.

Die Konvertierung der Pagemap zu einer Sitemap für Google und Co. geschieht in einer eigens dafür angefertigten ASP, ASP.NET oder PHP-Seite, die zum einen die Informationen zu statischen HTML-Seiten und zum anderen, mit den Datenzugriffsinformationen, iterativ alle Datensätze aus der Datenbank in Sitemap-XML umsetzt.


(klicken zum vergrößern)

Der Verarbeitungsablauf schematisch dargestellt:

Alle statischen Seiten in der Pagemap-Definition werden über eine Hilfsfunktion direkt als XML ausgegeben. Für die dynamischen Seiten wird zunächst Verbindung mit der Datenbank aufgenommen und dann werden alle Datensätze einzeln über die Hilfsfunktion in XML-Markup umgesetzt.

Ein ASP-Beispiel, wie ich es für diese Web-Site verwende, gibt es weiter unten im Abschnitt Downloads.

Erweiterungen

Wenn man die Häufigkeit der Änderungen und die Priorität für dynamische Seiten ebenfalls ausgeben möchte, müsste die Struktur und der Ausgabe-Code noch um die entsprechenden Definitionen der Datenbankfelder bzw. ein paar Zeilen Code ergänzt werden. In meinem Beispiel habe ich darauf verzichtet und übergebe der Suchmaschine lediglich das LastUpdate-Datum. Man könnte auch allen dynamischen Seiten eines Typs eine feste Priorität zuweisen.

Ausblick

Ich werden mich demnächst daran setzen eine ASP.NET-Umsetzung des Ausgabe-Codes einer Pagemap-Struktur zu entwickeln und sie ebenfalls hier veröffentlichen.

Es wäre wunderbar, wenn der ein oder andere Leser, der meine Idee aufgreift und entsprechenden Ausgabe-Code in anderen Server-Sprachen wie PHP, Ruby oder ähnlichem schreibt, sich zwecks Veröffentlichung hier auf der Seite mit mir in Verbindung setzt.

Downloads

Pagemap Ausgabe-Code für Sitemap-Dateien in ASP (pagemap_asp_beispiel.zip)
kick it on dotnet-kicks.de AddThis 0 wikio-Stimme(n) Trackback-Url...

142 Kommentare bislang...

  • In order to allow the player threw himself into the game, Nike CTR360 to provide them with a unique ball boots customized services, to ensure maximum wearing comfort and high performance.Accordance with the consumer's foot made out of "Assassins" will be more Jiashu suitable for legs, feet stretching and mobility to ensure competition. "Assassin" forefoot studs pressure applied according to individual needs, stretching up to 3 mm. Cope with extremely adverse site ground conditions, the players still be able to freely accelerate,decelerate and change direction.Soccer Shoesstreamlined upper breakthrough in fly line technology, and to achieve lightweight, tough, solid results. The base plate using a more lightweight, more comfortable carbon fiber technology, foot comfort Adidas F50 and foot feeling has been greatly improved.

    Upper streamlined control of the ball to become more lightweight and flexible. The Adidas Adipure Soccer Cleats of the boots, to improve stability in a disguised form in the process of the players more vulnerable to injuries in the high-speed movement. "Assassin" (the Mercurial Superfly III) stunning color,Soccer Cleats Wholesalewhich is really no doubt. Compared to the previous generation, more daring color uppers have done the upgrade. But it is in performance, and there is no bigger promotion assassin series of drawbacks of the previously recognized need to improve. But overall,"Assassins" (the Mercurial Superfly III) better meet the needs of the younger age groups Adidas F50 AdiZero Cleats of the pursuit of novelty fashion.
    142
    nike Soccer Shoes : Donnerstag, 17. Mai 2012 06:32
  • In the office at the end of the ceremony is about to, Soccer Shoesmercurial talaria a peripheral guard suddenly rush rush in, people not to sound to ring out: "newspaper, a new task order." "You like what kind of guarded? Haven’t seen what is this occasion, hurry to get it down." See the guard is a face of nervously appearance, black wind evil spirit immediately scold a way, then it up that roll order material look at, suddenly he also become some ugly face up.AC Milan famous crazy commentator Lu Daili recently participated in the Italy Friday prime-time broadcastNike CTR360 , Soccer cleats in the program, a senior AC Milan fans, discovered a lot of secrets,including Berlusconi and Guardiola have Soccer shop a relatively frequent contact.

    The Nike Tiempo Soccer Cleats are one of the most consistent boots you will currently find on the market. They offer pretty much the complete package for any player who fits the playmaker mold, or any player that aspires to be a playmaker. On field, they offer great performance and work out exactly as you would expect – and better! While Adidas Football dribbling, you are able to keep the ball closer to your feet by using the dampening pods up around the front of the boot. Adidas F50 are raised slightly off the boot and are basically padded regions that allow for a softer touch on the ball. The side pass and control pads and the control region serves a Adidas Predator Soccer Cleats valid purpose.
    141
    soccer shoes : Donnerstag, 17. Mai 2012 06:01
  • I worship the spirit of creation, worship of force blood heart, I worship, sorrow bomb damage, one of the greatest, popular person get everything. Wealth lose heart, wealth is lost. Therefore we should node popularity.
    140
    HERVE LEGER BANDAGE DRESS : Dienstag, 15. Mai 2012 08:47
  • chaussures air max 2009 Visage Yemeir è de grands changements, le Mozu sur la limitation des yu look est assez faible, si elle peut être faite de la question, et le diable sur les économies d'années de la richesse peut être quelqu'un d'autre poche.

    Mozu besoin de nourriture, l'homme ne donne certainement pas au vin une Mozu du monde humain et pas trop cher, mais livré au diable, et aurait certainement été creusé de dix fois la valeur de ce moment-là beaucoup de magie flux de pierre dans ses bras.

    Le Mozu comme de la soie, pierres précieuses, le monde humain sont riches en ces choses, mais ce sont des produits de luxe dans le Diable pour les vendre le très cher.

    "Vin" e-mail difficile à cracher 249; un mot.

    ?Digne de la première think-tank de la Légion d'articles Yingying, à la fois deviné." Xiao Han loue fort la route.

    "Même si vous le vin du diable de dumping, il est impossible dans un court laps de temps d'avoir beaucoup d'effet." E-mail de route.

    "Je comprends très bien, je viens de créer un canal pour un flux régulier de la magie Yuan-shih, et ne pas nécessairement avoir un peu de temps pour voir les résultats, peut-être une centaine d'années ou plus, je suis prêt à attendre jusqu'à ce que je domine le Diable les boissons de fournir ce jour-là. "Xiao Han Tao.

    "Vous avez vraiment terrible," e-mail vraiment difficile à imaginer, le diable et tout l'alcool doivent être achetés le cas de cet homme, à l'époque, il est plus puissant du Diable.

    Une personne a l'ambition n'est pas terrible, une force à ne pas craindre, une ambition et la force du talent terrible.

    Le front de cet homme ne fait aucun doute qu'une telle personne.

    "Rein dans le sang, le mari ciel fu à ce plan?" E-mail de route.

    "Vous êtes très intelligent, et vous êtes également un plan." Xiao Han Tao.

    "Vous aussi calculé mon?" E-mail avec colère.

    "Comment puis-je obtenir de la nourriture du monde humain tranquillement dans le Diable ne vous aident pas?" Xiao Han se mit à rire.
    139
    chaussures air max 2009 : Montag, 14. Mai 2012 11:48
  • air max 87 nike
    "Nouveau". Feng Luo fermez les yeux, les larmes à venir, il est sincère déplacé, ce truc complètement qu'il a atteint un nouveau niveau.

    "Candidat à la lame de style hit!" Cold voix mécanique sonné Feng Luo oreille.

    ?Le patrimoine pour déterminer le gagnant!"

    Les autres candidats ... hors! "

    Tous les candidats qui ont eu la villégiature dans un temps long, l'esprit totalement immergé dans cet iceberg, tout à coup une force invisible, instantanément descendit des étoiles dans le haute altitude, sont directement issues de tous les candidats qui.

    "Non!" Le trésor de la Sierra yeux regard Vénérable, le visage de la terreur, "Non, c'est moi, le succès de la moi!" Alors, ils restèrent immobiles, la divinité est toujours là, que l'ame a été détruit.

    "" L'étude et la compréhension du ver de cerf, la face principale a changé, et il est resté immobile.

    Un instant fort, comme un gel en général.

    Tous ceux qui tombent, que la divinité est toujours là.

    Avatar est fort dans l'univers d'autres petits, et même l'avatar dans l'univers d'origine, mais a également diminué dans le même temps.

    Lorsque la naissance des héritiers des autres ennemis à l'automne de la pensée de célébrer.

    Ce chapitre est écrit, supprimer, supprimer écrire, mais maintenant enfin satisfait.

    (A suivre mot dieux groupe の mise à jour l'aube réveil. Si vous aimez ce travail, vous êtes les bienvenus au point de départ
    138
    air max 87 nike : Montag, 7. Mai 2012 03:08

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 64


Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei