=====================
Transformationsregeln
=====================
XPath
=====
Schauen wir uns nun unsere einfache Transformationsregeln nochmals genauer an::
Dabei mag Ihnen die Syntax von XPath zur Adressierung der Knoten des DOM zunächst kompliziert erscheinen. Erfreulicherweise gibt es jedoch Werkzeuge wie z.B. `Firebug`_, die Ihnen diese Arbeit abnehmen:
.. _`Firebug`: http://getfirebug.com/
.. figure:: firebug-xpath-copy.png
:alt: Firebug: XPath kopieren
Die aus Firebug kopierten XPath-Angaben können z.B. so aussehen::
//*[@id="content"]
oder so, falls es sich nicht um eine id handelt sondern einen ``h2``-Tag innerhalb des zweiten ``div``-Tags, der wiedrum von einem ``div``-Tag auf oberster Ebene umgeben ist::
/html/body/div/div[2]/h2
Neben ``id`` und Anzahl können Knoten auch anhand ihres Namens adressiert werden.
Weitere Informationen erhalten Sie in :term:`XPath`.
Alternativ zu Firebug können Sie auch `CSS to XPath`_ verwenden um sich die XPath-Ausdrücke anzeigen zu lassen.
.. _`CSS to XPath`: http://css2xpath.appspot.com/
Regeln
======
Es gibt lediglich fünf verschiedene Arten von Regeln für die XDV-Transformationen:
````
ersetzt ein Element des Theme durch den Inhalt der Site.
Eine übliche Anwendung ist z.B., die ```` und ````-Tags aus Plone zu übernehmen::
````, ````
fügt Inhalte der Website am Anfang oder ende des angegebenen Elements ein.
Hiermit können z.B. die von Plone verwalteten CSS- und Javascript-Dateien dem Theme hinzugefügt werden::
Eine weitere, häufig verwendete Möglichkeit ist die Verwendung der ``id``- und ``class``-Elemente des ``body``-Tags um verschiedene Bereiche der Website unterschiedlich zu gestalten::
An dem folgenden Beispiel, in dem die linke und rechte Spalte von Plone in einer Spalte zusammengefasst werden soll, wird deutlich, dass mit der Verwendung von und verhindert werden kann, dass eine Regel die Inhalte einer anderen Regel überschreibt::
````, ````
Diese sind äquivalent zu ```` und ````, aber stellen den betreffenden Inhalt vor oder nach dem betreffenden Element des theme dar.
````
kopiert HTML-Knoten aus der Plone-Site innerhalb des Theme-Tags::
Beachten Sie hierbei, dass jedes ````-Element innerhalb von ``id="portal-globalnav"`` der Plone-Site in den Knoten mit der ``id="main-nav"`` des Themes kopiert wird.
````
entfernt das angegebene Element.
Diese Regel unterscheidet sich insofern von den anderen, da sie aus nur einem ``content-value``-Paar besteht.
Hiermit kann die Ausgabe von Inhalten der Plone-Site unterbunden werden, z.B.das Icon des user-name-Knotens::
Genaugenommen wird jedes ````-Tag innerhalb des Elements mit der ID ``user-name`` entfernt.