Heute habe ich mir mit Felix den Template Teil des Blogs, an dem wir gerade schrauben, angeschaut. Ziel war es eine Blog-Posting Seite zu bauen die möglichst einfach zu warten ist und gleichzeitig möglichst alle Features bietet die auch die Standard Wiki-Editier-Seite von Trac bietet.
Das geht ĂĽberraschenderweise sogar ganz gut. Denn: Trac ab 0.11 verwendet Genshi als Template-Sprache und Genshi wiederum ist XML mit XPath allĂĽren.
Will heiĂźen wir konnten uns das Template fĂĽr die normale Wiki-Eingabe nehmen und dann sagen: Aber die Ăśberschrift oben "Editing XXXXX" soll bitte weg und dafĂĽr soll da stehen "Create Blog Entry" - ein Feature das die meisten Template-Engines schon mal nicht bieten.
Und das ist natĂĽrlich geil, weil wir nicht den kompletten Template-Source kopieren mĂĽssen um das gleiche look und feel zu kriegen.
Nur das XPath natĂĽrlich wie alles bei XML total kompliziert macht. Das heiĂźt zum Beispiel das man damit nicht sagen kann, nimm dass und ersetze darin das gegen dies. Neeeiiiin. NatĂĽrlich ist alles andersherum.
Man sagt also: Meine Welt ist so definiert, das dies immer wenn es auftritt durch das ersetzt wird und jetzt hole ich mal das original in meine Welt hinein und magisch wird darin alles ersetzt.
GroĂźartig.
Klar das geht - aber das hätte man auch einfacher haben können.
p.s.: WeiĂź jemand wie man mit XPath aus dieser Struktur
<fieldset id="changeinfo"> <legend>Change information</legend> <div class="field"> <label for="tags">Tag under: (<a href="http://xn--hcker-gra.net/cgi-bin/trac.cgi/tags"> view all tags</a>)</label><BR/> <input title="Comma separated list of tags" type="text" id='tags' name="tags" size="30" value="blog"> </div> <div class="field"> <label>Comment about this change (optional):<br /> <input id="comment" type="text" name="comment" size="60" value="" /></label> </div><br /> <div class="options"> <label><input type="checkbox" name="readonly" id="readonly" /> Page is read-only</label> </div> </fieldset>
nur das div mit dem label und input fĂĽr den Kommentar herausmatchen kann?
Unsere Versuche sind erst einmal bei diesem XPath query stehen geblieben div[@id='changeinfo1']/div[@class='field']
.