Also ich das folgende XML-Dokument haben:XSL foreach-Schleife mit param keine Werte zurückgibt
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<couriersystem title="Courier System"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="system.xsd">
<branches>
<branch bid="1">
<name>Headquarters</name>
<address>
58, Main Street, Edinburgh, R79 2LR
</address>
<manager mid="1" />
<headoffice hid="1" />
<!-- delivery methods -->
<deliverymethods>
<method name="None" />
</deliverymethods>
</branch>
<branch bid="2">
<name>Convenience Local Branch</name>
<address>
118, Renfrew Avenue, Dumfries, J6 8CZ
</address>
<manager mid="2" />
<headoffice hid="1" />
<!-- delivery methods -->
<deliverymethods>
<method name="Bicycle" />
<method name="Car" />
</deliverymethods>
</branch>
<branch bid="3">
<name>Westwood Shopping Centre</name>
<address>
119, London Street, Nidrie, F57 8NE
</address>
<manager mid="3" />
<headoffice hid="1" />
<!-- delivery methods -->
<deliverymethods>
<method name="Bicycle" />
</deliverymethods>
</branch>
<branch bid="4">
<name>Logistics Warehouse</name>
<address>
160, Main Road, Dunfermline, A15 0PO
</address>
<manager mid="4" />
<headoffice hid="1" />
<!-- delivery methods -->
<deliverymethods>
<method name="Car" />
<method name="Van" />
</deliverymethods>
</branch>
<branch bid="5">
<name>Kingdom of Fife Shopping Centre</name>
<address>
92, Central Lane, Dunfermline, U38 2OD
</address>
<manager mid="5" />
<headoffice hid="7" />
<!-- delivery methods -->
<deliverymethods>
<method name="Bicycle" />
<method name="Car" />
</deliverymethods>
</branch>
<branch bid="6">
<name>Capital Branch</name>
<address>
95, High Street, Inverness, W91 8IW
</address>
<manager mid="6" />
<headoffice hid="7" />
<!-- delivery methods -->
<deliverymethods>
<method name="Car" />
<method name="Van" />
</deliverymethods>
</branch>
<branch bid="7">
<name>Glasgow City</name>
<address>
94, Harris Place, BathgateGlasgow, E74 2MR
</address>
<manager mid="7" />
<headoffice hid="1" />
<!-- delivery methods -->
<deliverymethods>
<method name="Car" />
</deliverymethods>
</branch>
<branch bid="8">
<name>Edinburgh Omni Centre</name>
<address>
119, West Road, Edinburgh, A79 2EG
</address>
<manager mid="8" />
<headoffice hid="1" />
<!-- delivery methods -->
<deliverymethods>
<method name="None" />
</deliverymethods>
</branch>
<branch bid="9">
<name>Royal Plaza</name>
<address>
81, Royal Plaza, Bathgate, U52 7GV
</address>
<manager mid="9" />
<headoffice hid="7" />
<!-- delivery methods -->
<deliverymethods>
<method name="Bicycle" />
<method name="Car" />
</deliverymethods>
</branch>
</branches>
<employees>
<employee eid="1">
<nin>AZ123518D</nin>
<firstname>Peter</firstname>
<lastname>Smith</lastname>
<gender>Male</gender>
<dob>1994-02-11</dob>
<email>[email protected]</email>
<address>
119, London Street, Nidrie, F57 8NE
</address>
<tel>07005748900</tel>
<salary>30526</salary>
<empbranch bid="1" />
<supervisor sid="1" />
</employee>
<employee eid="2">
<nin>CN174869F</nin>
<firstname>Jennifer</firstname>
<lastname>Black</lastname>
<gender>Female</gender>
<dob>1984-12-24</dob>
<email>[email protected]</email>
<address>
161, South Road, Nidrie, W79 8WG
</address>
<tel>07555111222</tel>
<salary>40576</salary>
<empbranch bid="2" />
<supervisor sid="1" />
</employee>
<employee eid="3">
<nin>ET127654M</nin>
<firstname>Aaron</firstname>
<lastname>Jones</lastname>
<gender>Male</gender>
<dob>1968-03-15</dob>
<email>[email protected]</email>
<address>
66, High Road, Yoker, Q47 4SR
</address>
<tel>07856471267</tel>
<salary>30526</salary>
<empbranch bid="3" />
<supervisor sid="1" />
</employee>
<!-- snip -->
</employees>
</couriersystem>
Und ich versuche, dieses xsl Dokument unten zu verwenden:
<?xml version="1.0" encoding="utf-8"?>
<!-- datetime2.xsl -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<h1 class="title">Courier System - Branches</h1><hr /><br />
<nav>
<ul>
<li><a href="#all">Show All</a></li>
<li><a href="#bymanager">By Manager</a></li>
</ul>
</nav>
<!-- show all -->
<h2 id="all">All Branches</h2>
<table border="1">
<tr bgcolor="#C0C0C0">
<th>ID</th>
<th>Branch Name</th>
<th>Delivery Methods</th>
</tr>
<xsl:for-each select="//branch">
<tr>
<td><xsl:value-of select="@bid" /></td>
<td><xsl:value-of select="address" /></td>
<td>
<xsl:for-each select="deliverymethods/method">
<xsl:choose>
<xsl:when test="position() = last()">
<xsl:value-of select="@name" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name" />,
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</table>
<a class="anchor-top" href="#">Back to top</a>
<!-- by manager -->
<h2 id="bymanager">Show Branches by Manager</h2>
<table border="1">
<tr bgcolor="#C0C0C0">
<th>ID</th>
<th>Branch Name</th>
<th>Delivery Methods</th>
<th>Manager</th>
</tr>
<xsl:for-each select="//branch">
<xsl:sort select="manager/@mid" order="ascending" />
<tr>
<td><xsl:value-of select="@bid" /></td>
<td><xsl:value-of select="address" /></td>
<td>
<xsl:for-each select="deliverymethods/method">
<xsl:choose>
<xsl:when test="position() = last()">
<xsl:value-of select="@name" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name" />,
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
<td>
<xsl:call-template name="showManager">
<xsl:with-param name="mid" select="manager/@mid" />
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</table>
<a class="anchor-top" href="#">Back to top</a>
</body>
</html>
</xsl:template>
<xsl:template name="show_title" match="//employees">
<xsl:param name="mid" />
<xsl:for-each select="employee[@eid=$mid]">
<xsl:value-of select="firstname" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Was Ich versuche zu erreichen, ist der Vorname jedes Managers in der Manager-Spalte in der Zeile: . Dies geschieht mithilfe der Vorlage und des Parameters, über den ich sende.
Allerdings zeigt meine XML-Seite beim Ausführen nur einen leeren Bildschirm, so dass irgendwo ein Fehler auftritt, den ich aber nicht finden kann.
Vielen Dank im Voraus!
Sind Sie sicher, dass das XSLT überhaupt angewendet wird? Chrome muss beispielsweise mit niedrigeren Sicherheitseinstellungen gestartet werden, um ein XSLT-Stylesheet auf ein XML-Dokument anzuwenden, das vom lokalen Dateisystem geladen wurde. Da Sie eine leere Seite erhalten, obwohl Sie statischen Inhalt haben, sollten Sie zumindest diesen statischen Inhalt sehen. –
Ja, es funktioniert ohne diesen Ausdruck @MartinHonnen – madcrazydrumma