| 235 | <h2>Vnořování maker</h2> |
| 236 | <p> |
| 237 | Trochu jiný případ je vnořování maker na stránce. |
| 238 | Např. si chceme vypsat vybrané internetové služby: |
| 239 | </p> |
| 240 | <m:tabulka> |
| 241 | <m:skript jazyk="perl"><![CDATA[ |
| 242 | use strict; |
| 243 | use warnings; |
| 244 | |
| 245 | print "Port\tSlužba\tProtokol\n"; |
| 246 | open(S, "<", "/etc/services") or die $!; |
| 247 | while (<S>) { |
| 248 | if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { |
| 249 | print "$2\t$1\t$3\n"; |
| 250 | } |
| 251 | } |
| 252 | ]]></m:skript> |
| 253 | </m:tabulka> |
| 254 | |
| 255 | <p> |
| 256 | Pro vygenerování použijeme dvě makra – tabulku a skript – která vložíme do textu stránky: |
| 257 | </p> |
| 258 | |
| 259 | <m:pre jazyk="xml"><![CDATA[ |
| 260 | <m:tabulka> |
| 261 | <m:skript jazyk="perl"><![CDATA[ |
| 262 | print "Port\tSlužba\tProtokol\n"; |
| 263 | open(S, "<", "/etc/services") or die $!; |
| 264 | while (<S>) { |
| 265 | if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { |
| 266 | print "$2\t$1\t$3\n"; |
| 267 | } |
| 268 | } |
| 269 | ]]]]>><![CDATA[</m:skript> |
| 270 | </m:tabulka>]]></m:pre> |
| 271 | |
| 272 | <p> |
| 273 | Ve skriptu v tomto případě negenerujeme XHTML značky, ale CSV (s tabulátory) |
| 274 | a o převod na XHTML tabulku se postará XSL šablona. |
| 275 | </p> |
| 276 | |
| 277 | <!-- |
| 278 | Nebo to taky můžeme napsat na jeden řádek: |
| 279 | cat /etc/services | perl -ne 'if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { print "$2\t$1\t$3\n";}' |
| 280 | a vložit do tabulky jako BASH skript :-) |
| 281 | --> |
| 282 | |
| 283 | <p> |
| 284 | Podobně bychom mohli postupovat i u <a href="#makraVeSkriptech">diagramu</a> – |
| 285 | negenerovat skriptem značky makra, ale pouze jeho obsah – zadání diagramu, nebo jen jeho část. |
| 286 | Někdy se ale může hodit ve skriptu nastavovat atributy elementů nebo elementy vytvářet dynamicky. |
| 287 | </p> |
| 288 | |