Thomas J.S.: Mehrere WML Dateien aus einer XML Quelle

Beitrag lesen

hallo Stefan,

solltest du mit der von Franz vorgeschlagenen lösung nicht klarkommmen, kanns du aus der selben xml datei per paramter duch die xsl datei nur den benötigten frucht aufrufen.

dazu musst du an der xml datei auch was ändern ändern:
z.B: könnte das ganz so gehen:

<ELEMENT id="blabla">
      <NAME>Kirsche</NAME>
      <DETAILS>
         <FARBE>rot</FARBE>
         <FORM>rund</FORM>
         <GESCHMACK>sauer</GESCHMACK>
      </DETAILS>
   </ELEMENT>

der link könnte dann so aussehen:

fruechte.xml?foo=blabla

übergeben kannst du das dann so:
----------

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

<xsl:param name="foo" select="''" />

<xsl:template match="WURZEL">

<xsl:processing-instruction name="cocoon-format">
type="text/wml"</xsl:processing-instruction>

----------

der link könnte dann so erstellt werden:

<card id="index" title="Früchte">
    <i>contents:</i><br />
      <xsl:for-each select="ELEMENT">
        <xsl:number value="position(  )" format="1: " />
<a>
<xsl:attribute name="href">fruechte.xml?foo=<xsl:value-of select="@id" /></xsl:attribute>
        <xsl:value-of select="NAME" /></a><br />
      </xsl:for-each>
  </card>

<xsl:apply-templates select="ELEMENT[@id = $foo]"/>

--------

das sollte bewirken, dass jeweils nur ein frucht dargestellt wird, egal wie groß der xml datei ist.

du kannst auch noch eine abfrage machen ob überhaupt ein frucht gefrag wurde oder nicht und dementsprechend was anderes laden:

xsl:choose
      <xsl:when test="$foo">
         <xsl:apply-templates select="ELEMENT[@id = $foo]"/>
      </xsl:when>
      xsl:otherwise
        was auch immer du hier haben willst
      </xsl:otherwise>
   </xsl:choose>

-----

grüße
thomas