Control asp:Xml

22/01/2010 - 12:05 von Andrej Golubew | Report spam
Hallo zusammen,

ich habe Information, die von der Struktur sich wiederholt. Es ist nicht so
viele Datnesàtze um eine DB zu nutzen. Deswegen habe ich entschieden xml mit
xslt zu nutzen. Funktioniert mit eine xsl:for-each ganz gut.

Nur wenn zwei Schleifen schachtele, wird von in zweite Schleife nur eine
Datensatz angezeigt.(Knote „keynote“)

Hier ist XML

<?xml version="1.0" encoding="utf-8" ?>
<treatments>
<treatment>
<caption>Gentleman Behandlung</caption>
<duration> ca. 120 Min.</duration>
<price>54,00</price>
<keynotes>
<keynote>Reinigung</keynote>
<keynote>Hautdiagnose</keynote>
</keynotes>
<image>gentleman.jpg</image>
</treatment>
<treatment>
<caption>Behandlung 2</caption>
<duration> ca. 90 Min.</duration>
<price>12,00</price>
<keynotes>
<keynote>Reinigung</keynote>
<keynote>Hautdiagnose</keynote>
</keynotes>
<image>gentleman.jpg</image>
</treatment>
</treatments>


Hier ist XSLT

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:for-each select="treatment">
<div>
<xsl:value-of select="caption" />
<xsl:value-of select="duration" />
<xsl:value-of select="price" />
</div>
<div style="float:left">
<ul>
<xsl:for-each select="keynotes">
<li>
<xsl:value-of select="keynote" />
</li>
</xsl:for-each>
</ul>
</div>
<div>
<img>
<xsl:attribute name="src">
<xsl:value-of select="image" />
</xsl:attribute>
</img>
</div>
<img src="linie.jpg"></img>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Was mache ich hier falsch? Danke.
 

Lesen sie die antworten

#1 Karsten Samaschke
22/01/2010 - 12:28 | Warnen spam
Falsches Selektieren:

<xsl:for-each select="keynotes">
<li>
<xsl:value-of select="keynote" />
</li>
</xsl:for-each>



Du selektierst auch stets nur den ersten Knoten.

Richtiger wàre es so:

<xsl:for-each select="keynotes/keynote">
<li>
<xsl:value-of select="." />
</li>
</xsl:for-each>

Mit freundlichen Gruessen / Best regards,

Karsten Samaschke
IT-Development, IT-Training, IT-Coaching

Blog: http://www.karsan.de
Family: http://www.familyblogger.de
Nerd: http://www.aspextra.de

Sent via Thinkpad x200 Tablet / Windows 7

Ähnliche fragen