Fange flere elementer med samme navn
Jeg har et XML dokument der ser såden ud:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="people.xsl" ?>
<people>
<person id="1">
<name>
<first_name>Kim</first_name>
<last_name>Melkane</last_name>
</name>
<telephones>
<telephone>62 22 87 88</telephone>
<mobile></mobile>
</telephones>
<emails>
<email>melkane@ofir.dk</email>
<email>melkane@get2net.dk</email>
</emails>
<jobs>
<job>Projekt Leder</job>
<job>OOA og OOD Specilist</job>
<job>Gramatik og Ordstilling Specilist</job>
<job>Fremmedord Specilist</job>
</jobs>
</person>
<person id="2">
<name>
<first_name>Anders</first_name>
<last_name>Riis</last_name>
</name>
<telephones>
<telephone></telephone>
<mobile>24 61 50 03</mobile>
</telephones>
<emails>
<email>anders_riis@coolsurf.dk</email>
<email>anders_riis@hotmail.com</email>
</emails>
<jobs>
<job>Version Styring og Backup</job>
</jobs>
</person>
<person id="3">
<name>
<first_name>Lars</first_name>
<last_name>Lauritsen</last_name>
</name>
<telephones>
<telephone>62 21 59 90</telephone>
<mobile></mobile>
</telephones>
<emails>
<email>substanZe@fallen.dk</email>
</emails>
<jobs>
<job>Servlett Specilist</job>
<job>XML og XSLT Specilist</job>
<job>OOA og OOD Specilist</job>
<job>Gramatik og Ordstilling Specilist</job>
</jobs>
</person>
<person id="4">
<name>
<first_name>Soeren</first_name>
<last_name>Due</last_name>
</name>
<telephones>
<telephone>62 20 88 01</telephone>
<mobile>22 13 92 74</mobile>
</telephones>
<emails>
<email>due.fhis@post.tele.dk</email>
</emails>
<jobs>
<job>Gramatik og Ordstilling Specilist</job>
<job>Adv. Algoritmer Specilist</job>
</jobs>
</person>
<person id="5">
<name>
<first_name>Gorm</first_name>
<last_name>Reventlow</last_name>
</name>
<telephones>
<telephone></telephone>
<mobile>40 96 93 67</mobile>
</telephones>
<emails>
<email>locutus@fallen.dk</email>
<email>gr@fallen.dk</email>
<email>gorm@reventlow.com</email>
</emails>
<jobs>
<job>Adv. og Tidskraevende Web-Surfing</job>
<job>Adv. og Tidskraevende Web-Chatting</job>
</jobs>
</person>
</people>
Som i kan se så er der genganger af elementerne "email" og "job". Dem prøver jeg at få vist i et XSLT dokumment.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="people">
<html>
<head>
</head>
<body>
<div align="center"><h1>xsl:for-each</h1></div>
<xsl:apply-templates select="person"/><br/>
</body>
</html>
</xsl:template>
<xsl:template match="person">
<xsl:if test="@id mod 2 = 0">
<p>
<strong><font size="+2" color="blue"><xsl:value-of select="name"/></font></strong><br/>
<xsl:for-each select="telephones">
<xsl:if test="string-length(telephone) != 0">
<font color="blue">Tlf nr: <xsl:value-of select="telephone"/></font><br/>
</xsl:if>
<xsl:if test="string-length(mobile) != 0">
<font color="blue">Mobile nr: <xsl:value-of select="mobile"/></font><br/>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="emails">
<xsl:if test="string-length(email) != 0">
<font color="blue">Email: <xsl:value-of select="email"/></font><br/>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="jobs">
<xsl:if test="string-length(job) != 0">
<font color="blue">Job: <xsl:value-of select="job"/></font><br/>
</xsl:if>
</xsl:for-each>
</p>
</xsl:if>
<xsl:if test="@id mod 2 = 1">
<p>
<strong><font size="+2" color="red"><xsl:value-of select="name"/></font></strong><br/>
<xsl:for-each select="telephones">
<xsl:if test="string-length(telephone) != 0">
<font color="red">Tlf nr: <xsl:value-of select="telephone"/></font><br/>
</xsl:if>
<xsl:if test="string-length(mobile) != 0">
<font color="red">Mobile nr: <xsl:value-of select="mobile"/></font><br/>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="emails">
<xsl:if test="string-length(email) != 0">
<font color="red">Email: <xsl:value-of select="email"/></font><br/>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="jobs">
<xsl:if test="string-length(job) != 0">
<font color="red">Job: <xsl:value-of select="job"/></font><br/>
</xsl:if>
</xsl:for-each> </p>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Jeg får dog kun vist det først element i "job" og "email".... hvorfor viser de kun det førest element og hvordan løser jeg problemet?