Potřebujete pomoci s XSLT?
Nabízím školení, konzultace, vývoj XSLT kódu na zakázku. Nevájte a kontaktujte mne.

Podpořte provoz stránek
Platba probíhá pomocí služby PayPal a je možné platit kartou nebo převodem z vašeho PayPal účtu.

Kapitola 11. Pokročilejší techniky a ukázky

11.1. Čtení více souborů
11.2. Odvození struktury dokumentu
11.3. Nahrazení iterace rekurzí
11.4. Ukázka generování SQL z XML
11.5. Kopírování uzlů
11.6. Zpracování dokumentů používajících jmenné prostory

11.1 Čtení více souborů

Pomocí funkce document() můžeme v jednom stylu pracovat s více soubory. Dokonce lze jedním voláním funkce načíst několik souborů najednou.

Příklad 11.1. Dokument se seznamem souborů k načtení – numberfiles.xml

<files>
  <file>katalog.xml</file>
  <file>zamestnanci.xml</file>
  <file>parametry2.xsl</file>
</files>

Příklad 11.2. Styl, který očísluje všechny elementy ze zadaných dokumentů – document.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

<xsl:output method="html" encoding="utf-8"/>

<xsl:template match="/">
  <html>
    <body>
      <xsl:apply-templates select="document(//file)/node()"/>      
    </body>
  </html>
</xsl:template>

<xsl:template match="*">
  <xsl:number count="*" level="any" format="1. "/>
  <xsl:value-of select="name(.)"/><br/>
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="text()"/>

</xsl:stylesheet>

Funkci document() můžeme použít v libovolném XPath výrazu. Uzly, které funkce vybere, se nestávají součástí stromu vstupního dokumentu. Pokud na ně chceme aplikovat šablony, můžeme všechny vybrané uzly postupně zpracovat pomocí instrukce <xsl:for-each> nebo pomocí <apply-templates>.

© Jiří Kosek 2014

Tento dokument je určen výhradně pro osobní potřebu seznámení s jazykem XSLT. Jakékoliv jiné použití, včetně dalšího šíření, pořizování kopií, použití při školeních a výuce apod. je výslovně zakázáno a bude považováno za porušení autorských práv.


Copyright © 2000-2014 Jiří Kosek