changeset 7317:00b17e77c2e8

Datacage ref doc: Explain dc:macro & Co.
author Sascha L. Teichmann <teichmann@intevation.de>
date Mon, 14 Oct 2013 15:27:49 +0200 (2013-10-14)
parents 52bc38e6bbe1
children d8ca7a1d522c
files artifacts/doc/datacage_ref_de.rst
diffstat 1 files changed, 65 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/doc/datacage_ref_de.rst	Mon Oct 14 14:40:51 2013 +0200
+++ b/artifacts/doc/datacage_ref_de.rst	Mon Oct 14 15:27:49 2013 +0200
@@ -117,12 +117,73 @@
 
 Makros
 ~~~~~~
-
-``dc:macro`` **TODO**
+Um innerhalb des Definitionsdokumentes Wiederholungen zu vermeiden, können sogenannte
+Makros definiert werden, die dann von anderer Stellen aus eingefügt werden können.
 
-``dc:macro-body`` **TODO**
+``dc:macro`` Wiederverwendbare Teile definieren
+...............................................
 
-``dc:call-macro`` **TODO**
+.. code:: xml
+
+    <dc:macro name="Name">
+      ...
+    </dc:macro>
+
+Definiert ein Makro namens Name. Nach der Definition ist dieses dann unter diesem
+Namen global innerhalb des Definitionsdokumentes bekannt. Makros können geschachtelt
+werden. Auch eingeschachtelte Makros sind global sichtbar. Die Makrodefinition und
+ihre eingeschalteten Elemente werden nicht in das Ausgabedokument übernommen.
+
+``dc:call-macro`` Makros aufrufen
+
+.. code:: xml
+
+    <dc:call-macro name="Name">
+
+Ruft ein Makro names Name auf. Dieses muss mit `dc:macro` definiert sein. Die Reihenfolge
+von Definition und Aufruf ist egal.
+
+``dc:macro-body`` Elemente an ein Makro übergeben
+.................................................
+
+.. code:: xml
+
+    <dc:macro name="Name">
+      ...
+      <dc:macro-body/>
+      ...
+    </dc:macro>
+
+Um an Makros weitere Bausteine als Argument übergeben zu können, ist es optional
+möglich innerhalb einer Makrodefinition ein Element `dc:macro-body` einzufügen.
+Dieses Element expandiert sich zum Inhalt des `dc:call-macro`-Aufrufs.
+
+.. code:: xml
+
+    <dc:call-macro name="Name">Inhalt von dc:macro-body</dc:call-macro>
+
+Zur Verdeutlichung ein konkretes Beispiel
+
+.. code:: xml
+
+    <dc:macro name="Greetings">
+      <Hallo>
+          <dc:macro-body/>
+      </Hallo>
+    </dc:macro>
+
+    <dc:call-macro name="Greetings">Welt</dc:call-macro>
+    <dc:call-macro name="Greetings">Mond</dc:call-macro>
+
+Dies produziert folgende Ausgabe
+
+.. code:: xml
+
+    <Hallo>Welt</Hallo>
+    <Hallo>Mond</Hallo>
+
+Das Haupteinsatzgebiet dieses Konstruktes ist die transparente Bereitstellung
+von Kontexten, die dann verschiedentlich ausgewertet werden sollen.
 
 Sonstige Elemente
 ~~~~~~~~~~~~~~~~~

http://dive4elements.wald.intevation.org