Mam następujący plik XML, który przechowuje filmów i aktorów szczegóły:XSLT - policzyć liczbę elementów podrzędnych za pomocą XPath
<database
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="movies.xsd">
<movies>
<movie movieID="1">
<title>Movie 1</title>
<actors>
<actor actorID="1">
<name>Bob</name>
<age>32</age>
<height>182 cm</height>
</actor>
<actor actorID="2">
<name>Mike</name>
</actor>
</actors>
</movie>
</movies>
</database>
Jeśli element actor
zawiera więcej niż jeden elementy podrzędne (w tym przypadku jest to nazwa , wiek i wzrost), a następnie chcę wyświetlić jego nazwę jako hiperłącze.
Jeśli jednak element actor
zawiera tylko jeden element potomny (nazwę), powinien być wyświetlany jako zwykły tekst.
XSLT:
<xsl:template match="/">
<div>
<xsl:apply-templates select="database/movies/movie"/>
</div>
</xsl:template>
<xsl:template match="movie">
<xsl:value-of select="concat('Title: ', title)"/>
<br />
<xsl:text>Actors: </xsl:text>
<xsl:apply-templates select="actors/actor" />
<br />
</xsl:template>
<xsl:template match="actor">
<xsl:choose>
<xsl:when test="actor[count(*) > 1]/name">
<a href="actor_details.php?actorID={@actorID}">
<xsl:value-of select="name"/>
</a>
<br/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="name"/>
<br/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Więc w tym przypadku Bob powinien być wyświetlany jako hiperłącze, a Mike powinien być wyświetlany jako zwykły tekst. Jednak moja strona wyświetla zarówno Boba, jak i Mike'a jako zwykły tekst.