Problem mit XML / XSL

abenstex

Grünschnabel
Hallo zusammen,

ich versuche zur Zeit eine XML-Datei mit folgendem Muster:
Code:
   <root>
   	 <1stElement>element
   		   <2ndElement>element2</2ndElement>
   		   <3rdElement>element3</3rdElement>
   	  </1stElement>
  </root>
mittels XSL in HTML umzuwandeln. Jetzt habe ich allerdings das Problem, dass wenn ich <xsl:value-of select="1stElement" /> aufrufe auch automatisch die Werte der anderen Element bekomme. Gibt es da eine Möglichkeit das zu umgehen?
 
Hallo,

hier ist das XSL-File:
Code:
<xsl:template match="/">
  	  <html>
  		<head>
  		  <title>test</title>
  		</head>
  		<body>
  		  <xsl:apply-templates select="root"/>
  		</body>
  	  </html>
  	</xsl:template>
  	<xsl:template match="root">
  	<p>1stElement: <xsl:value-of select="1stElement"/></p>
  	  <xsl:apply-templates select="1stElement"/>
  	</xsl:template>
  	
  	<xsl:template match="1stElement">
  	   <p>2ndElement: <xsl:value-of select="2ndElement"/></p>
  	</xsl:template>
  	
  
  </xsl:stylesheet>
Bei mir steht dann am Anfang der HTML-Datei nach 1stElement sofort alles was in der XML-Datei steht und danach kein Content mehr.

Vielen Dank
 
Habe Dein sheet etwas (aus meiner Sicht) optimiert, besser Du nimmst für jedes Element ein eigenes Template. Mit <xsl:value-of select="text()"/> nimmst Du nur den Text eines Knotens heraus. Außerdem nehme Elemente vom Format buchstabe-zahl und nicht umgekehrt.

Code:
<?xml version="1.0" encoding="UTF-8"?>

   <root>
   	 <e1>element
   		   <e2>element2</e2>
   		   <e3>element3</e3>
   	  </e1>
  </root>

Code:
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
  	  <html>
  		<head>
  		  <title>test</title>
  		</head>
  		<body>
  		  <xsl:apply-templates />
  		</body>
  	  </html>
  	</xsl:template>
  	
  	<xsl:template match="e1">
  	   <p>e1: <xsl:value-of select="text()"/></p>
  	   <xsl:apply-templates />
  	</xsl:template>
  	
  	<xsl:template match="e2">
  	   <p>e2: <xsl:value-of select="."/> </p>
  	   
  	</xsl:template>
  	
  	<xsl:template match="e3">
  	   <p>e3: <xsl:value-of select="."/> </p>
  	   
  	</xsl:template> 
  	
  	<xsl:template match="text()|@*">
  	
  	</xsl:template>
  	
  
  </xsl:stylesheet>
 

Neue Beiträge

Zurück