frankx: xsl match apply templates

Beitrag lesen

Hellihello Thomas,

Wenn ich jetzt für die "id" und alles weitere noch individuelle Formatierung bzw. Zusätze habe, dann muss ich für jeden Unterknoten wieder den kompletten XPath angeben.

Nein, eigentlich nicht.

denn
<xsl:template match="id">
spuckt dan alle ids aus (apply templates hab ich jetzt weggelassen).

aber gerade das apply-template wäre gut gewesen, denn schließlich entscheidet das wie und wo die Templates aufgerufen werden

  
<xsl:stylesheet version="1.0"  
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
  
 <xsl:output method="html"/>  
  
 <xsl:template match="/produktliste/produkt[id='ID1']">  
    <h1>Produkte</h1>  
     <div style="border:1px solid blue">  
     <xsl:apply-templates/>  
    </div>  
 </xsl:template>  
  
 <xsl:template match="id">  
  <div><i>ID:</i><xsl:apply-templates/></div>  
 </xsl:template>  
  
 <xsl:template match="autor">  
  <div style="background-color:#F34;"><b>Autor: </b>  
   <xsl:apply-templates/>  
  </div>  
 </xsl:template>  
  
</xsl:stylesheet>  

Jetzt spuckt er alles aus, was er hat, selbst die Elemente, die garkein match haben.

  
<?xml version="1.0"?>  
<?xml-stylesheet type="text/xsl" href="produkt22html.xsl"?>  
<!DOCTYPE produkt SYSTEM "produkt.dtd">  
<produktliste>  
 <produkt>  
  <id>ID1</id>  
  <titel>Titel1</titel>  
  <autor>Autor1</autor>  
  <preis>Preis1</preis>  
 </produkt>  
 <produkt>  
  <id>ID2</id>  
  <titel>Titel2</titel>  
  <autor>Autor2</autor>  
  <preis>Preis2</preis>  
 </produkt>  
 <produkt>  
  <id>ID3</id>  
  <titel>Titel3</titel>  
  <autor>Autor3</autor>  
  <preis>Preis3</preis>  
 </produkt>  
 <produkt>  
  <id>ID4</id>  
  <titel>Titel4</titel>  
  <autor>Autor4</autor>  
  <preis>Preis4</preis>  
 </produkt>  
</produktliste>  

Fragen: 1. kann ich denn mit einer "zentralen" Angabe das Produkt rausfiltern und dann in der Folge nur noch mit match="id" etc. auf die Unterknoten zugreifen.

Ich weiss nicht was du damit meinst.

Na an obigem Beispiel hätte ich gedacht, der sollte nur id und autor des Elements mit der id="ID1" rausspucken.

Wenn du das ganze mit serverseitiger Technologie lösen kannst oder willst, muss du einfach das Formular mittels XSLT erzeugen.

Das Formular mittes XSLT? Kommt da denn was anderes raus, beim senden an den Server, als bei einem "normalen" Formular.

Gruß,

frankx