Hallo Leute,
Ich suche gerade nach einer Idee, wie ich aus einer Webseite bestimmte Informationen herauslese und weiter nutzbar mache. Es geht hier erstmal nur um eine Webseite eines Restaurants das einen wöchentlich wechselnden Mittagstisch anbietet. Ich möchte die Informationen der Webseite automatisiert in mein xslt/php basiertes Sammelbestellsystem überführen.
Mein Ansatz ist die Informationen mit xslt soweit es geht heruaszufiltern, später evtl. mit php weiter verfeinern um da raus ein XML basiertes Menu zu erstellen.
Problem an dieser Stelle, die Webseite ist vermutlich über ein webbasiertes CMS gepflegt und nicht sehr sauber. Ein wichtiger Informationsbestandteil sind z.b. die Zeilenumbrüche im Text.
Und genau daran scheitere ich gerade, wie ich den Zeilenumbruch erkenne, andere Formatierungen aber ignoriere.
Ein einfaches template welches mir die ganzen überflüssigen leeren Nodes aus dem unten angehängten Ausschnitt der Website herausfiltert wäre folgendes:
jetzt möchte ich aber noch folgen Funktionen ergänzen:
- Das Template soll nur die Tabelle bearbeiten in dem der Text "Mittagstischkarte" vorkommt
- Die Zeilenumbrüche im Textfluss sollen erkannt werden
- Die Gerichte werden eindeutig nur durch die Preise getrennt, d.h. einen Nummer in der Form X.XX soll erkannt werden
- Zeilen die keinen echten Text (A-Z a-z 0-9) enthalten sollen ignoriert werden.
Ist dies mit xslt lösbar ?
es sind auch mehrere templates mit mehreren Aufrufen denkbar.
Hier ein Ausschnitt aus dem Original Menu:
Ich bin für jeden Hinweis dankbar,
Gruß
Arne
Ich suche gerade nach einer Idee, wie ich aus einer Webseite bestimmte Informationen herauslese und weiter nutzbar mache. Es geht hier erstmal nur um eine Webseite eines Restaurants das einen wöchentlich wechselnden Mittagstisch anbietet. Ich möchte die Informationen der Webseite automatisiert in mein xslt/php basiertes Sammelbestellsystem überführen.
Mein Ansatz ist die Informationen mit xslt soweit es geht heruaszufiltern, später evtl. mit php weiter verfeinern um da raus ein XML basiertes Menu zu erstellen.
Problem an dieser Stelle, die Webseite ist vermutlich über ein webbasiertes CMS gepflegt und nicht sehr sauber. Ein wichtiger Informationsbestandteil sind z.b. die Zeilenumbrüche im Text.
Und genau daran scheitere ich gerade, wie ich den Zeilenumbruch erkenne, andere Formatierungen aber ignoriere.
Ein einfaches template welches mir die ganzen überflüssigen leeren Nodes aus dem unten angehängten Ausschnitt der Website herausfiltert wäre folgendes:
HTML:
<xsl:template match="table/tr/td/div">
<xsl:if test=". != ''">
DIV:<xsl:value-of select="." /> <br/>
</xsl:if>
</xsl:template>
jetzt möchte ich aber noch folgen Funktionen ergänzen:
- Das Template soll nur die Tabelle bearbeiten in dem der Text "Mittagstischkarte" vorkommt
- Die Zeilenumbrüche im Textfluss sollen erkannt werden
- Die Gerichte werden eindeutig nur durch die Preise getrennt, d.h. einen Nummer in der Form X.XX soll erkannt werden
- Zeilen die keinen echten Text (A-Z a-z 0-9) enthalten sollen ignoriert werden.
Ist dies mit xslt lösbar ?
es sind auch mehrere templates mit mehreren Aufrufen denkbar.
Hier ein Ausschnitt aus dem Original Menu:
HTML:
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="30" height="552"></td>
<td width="529" valign="top">
<div align="center"><font size="4"><b>Mittagstischkarte</b></font><br><br><font size="4"><font size="3">Unser wöchentlich wechselnder Mittagstisch</font></font> <br><font size="4"><font size="3">von 12.00 bis 14.00 Uhr</font></font></div>
<div align="center"></div>
<div align="center"></div>
<div align="center"></div>
<div align="center"></div>
<div align="center"><font size="3"></font></div>
<div align="center"><font size="3"></font></div>
<div align="center"><font size="3"></font></div>
<div align="center"><font size="3"></font></div>
<div align="center"><font size="3"></font></div>
<div align="center"><font size="3"></font> </div>
<div align="center"><b><font size="3">"Eintopf der Woche"</font></b><br>Linseneintopf mit Bockwurst<br>€ 5,50 <br></div>
<div align="center"><font size="3"></font> </div>
<div align="center"><font size="6">Tagessuppe 1,50 €<br><br></font> <br></div>
<div align="center"><font size="3">Kasseler mit Sauerkraut und Kartoffelpüree<br><b>5,50 €</b><br></font><br><font size="4"><font size="2">__________</font></font><font size="4"><br>kl. Schnitzel mit Sauce nach Wahl,<br>Bratkartoffeln und Gemüse<br><br></font><font size="4"><b>5,50 €<br><br></b></font></div>
<div align="center"></div>
<div align="center"></div>
<div align="center"></div>
<div align="center">______________</div>
<div align="center"></div>
<div align="center"></div>
<div align="center"></div>
<div align="center"><font size="4"></font></div>
<div align="center"><font size="4"></font></div><div align="center"><font size="4" color="#f0f090">frische Bratwurst<br>mit Bratkartoffeln und Gemüse<br></font></div><div align="center"></div>
<div align="center"><font size="4"></font></div>
<div align="center"><font size="4"></font></div>
<div align="center"><font size="4">5,50 €</font></div>
<div align="center">____________</div>
<div align="center"><font size="4"></font></div>
<div align="center"><font size="4">fruchtiges Hähnchengeschnetzeltes<br>im Reisrand mit Salat<br>5,50 €<br>---------<br></font></div>
<div align="center"></div>
<div align="center"><font size="4">2 Spiegeleier<br> mit Salzkartoffeln und Blattspinat<br>5,50 €</font></div>
<div align="center"><font size="4"></font></div>
<div align="center"></div>
<div align="center"><font size="4">_________</font><br><font size="5"><br>Dessert 1,50 €</font><br><br><br><br></div><font size="4"><br></font>
<div align="center"><font size="4"><font size="4"></font></font></div><font size="4"> <br><br></font>
<div align="center"></div>
<div align="center"><font size="3"></font></div>
<div align="center"></div> </td>
<td width="30"></td>
</tr>
</table>
Ich bin für jeden Hinweis dankbar,
Gruß
Arne