Christian Seiler: Inhalte auslesen

Beitrag lesen

Hallo,

Ja und nein
bei document() muss ich doch das Stylesheet jedes mal anpassen, wenn eine neue Datei dazukommt (bei 10 Dateien gibt es also 10 Anweisungen etc ...) Gibt es nicht eine Möglichkeit, über eine Schleife alle Datei zu erfassen und die Kurzbeschreibungen auszulesen?

Naja, wenn die Dateien fortlaufend nummeriert sind und Du Dir *sicher* bist, dass sobald eine Datei nicht existiert, alle darauffolgenden Dateien auch nicht existieren, dann kannst Du folgendes machen (ungetestet, die Funktionsweise sollte aber klar werden):

<div>  
  <xsl:call-template name="kurzbeschreibung">  
    <xsl:with-param name="fileid" select="1" />  
  </xsl:call-template>  
</div>

Sowie der zusätzlichen Template:

<xsl:template name="kurzbeschreibung">  
  <xsl:param name="fileid" />  
  <xsl:variable name="filename" select="concat('datei_', $file, '.xml')" />  
  <xsl:if test="doc-available($filename)">  
    <p style="kurzbeschreibung">  
      <xsl:value-of select="doc($filename)/artikel/kurzbeschreibung" />  
    </p>  
    <xsl:call-template name="kurzbeschreibung">  
      <xsl:with-param name="fileid" select="$fileid + 1" />  
    </xsl:call-template>  
  </xsl:if>  
</xsl:template>

Verzeichnisinhalte auslesen geht dagegen mit reinem XSLT nicht. Du kannst aber bei verschiedenen XSLT-Prozessoren durchaus eigene Funktionen "andocken", d.h. in einer anderen Sprache geschriebene Funktionen aus XSLT heraus aufrufen. Leider gibt es dafür keinen XSLT-Prozessor-übergreifenden Standard, weswegen es stark davon abhängt, welchen Prozessor du verwendest.

Viele Grüße,
Christian