Mercurial > dive4elements > river
diff artifacts/doc/datacage_ref_de.rst @ 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 |
parents | 52bc38e6bbe1 |
children | d8ca7a1d522c |
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 ~~~~~~~~~~~~~~~~~