如果在 xslt 中不起作用
IF on xlst not working
在过去的一个小时里,我一直在用头撞墙试图弄清楚为什么 if 不起作用,我需要一双新的眼睛来告诉我我在逻辑上遗漏了什么。 if 在第 25 行之后开始。它应该工作,老实说它遵循以下示例:http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=tryxsl_if 但它什么都不做!
请看下面:
<?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="html" indent="yes"/>
<xsl:template match="/">
<html>
<!-- Background image -->
<body background="bgimage.jpg">
<h2 style="color:#47B2B2">My Movie Collection</h2>
<!-- set border, color, and padding-->
<table border="1" bgcolor="#0A1A1A" cellpadding="5">
<tr bgcolor="#1F4C4C">
<!-- Set order -->
<th>Title</th>
<th>Director</th>
<th>Year</th>
<th>Genre</th>
<th>ID</th>
</tr>
<xsl:for-each select="movies/movie">
<!-- Sort by title -->
<xsl:sort select="title"/>
<xsl:if test="year>2005">
<tr bgcolor="#3D9999">
<td>
<!-- Look for link, target to blank, the link text is the tittle pulled from xml -->
<a href="{link}" target="_blank"><xsl:value-of select="title"/></a>
</td>
<td>
<xsl:value-of select="director"/>
</td>
<td>
<xsl:value-of select="year"/>
</td>
<td>
<xsl:value-of select="genre"/>
</td>
<td>
<xsl:value-of select="movieID"/>
</td>
</tr>
<xsl:if/>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:if/>
应该是 </xsl:if>
因为它是结束标记而不是自引用标记。
这里是更正后的代码:
<?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="html" indent="yes"/>
<xsl:template match="/">
<html>
<!-- Background image -->
<body background="bgimage.jpg">
<h2 style="color:#47B2B2">My Movie Collection</h2>
<!-- set border, color, and padding-->
<table border="1" bgcolor="#0A1A1A" cellpadding="5">
<tr bgcolor="#1F4C4C">
<!-- Set order -->
<th>Title</th>
<th>Director</th>
<th>Year</th>
<th>Genre</th>
<th>ID</th>
</tr>
<xsl:for-each select="movies/movie">
<!-- Sort by title -->
<xsl:sort select="title"/>
<xsl:if test="year > 2005">
<tr bgcolor="#3D9999">
<td>
<!-- Look for link, target to blank, the link text is the tittle pulled from xml -->
<a href="{link}" target="_blank"><xsl:value-of select="title"/></a>
</td>
<td>
<xsl:value-of select="director"/>
</td>
<td>
<xsl:value-of select="year"/>
</td>
<td>
<xsl:value-of select="genre"/>
</td>
<td>
<xsl:value-of select="movieID"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
在过去的一个小时里,我一直在用头撞墙试图弄清楚为什么 if 不起作用,我需要一双新的眼睛来告诉我我在逻辑上遗漏了什么。 if 在第 25 行之后开始。它应该工作,老实说它遵循以下示例:http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=tryxsl_if 但它什么都不做!
请看下面:
<?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="html" indent="yes"/>
<xsl:template match="/">
<html>
<!-- Background image -->
<body background="bgimage.jpg">
<h2 style="color:#47B2B2">My Movie Collection</h2>
<!-- set border, color, and padding-->
<table border="1" bgcolor="#0A1A1A" cellpadding="5">
<tr bgcolor="#1F4C4C">
<!-- Set order -->
<th>Title</th>
<th>Director</th>
<th>Year</th>
<th>Genre</th>
<th>ID</th>
</tr>
<xsl:for-each select="movies/movie">
<!-- Sort by title -->
<xsl:sort select="title"/>
<xsl:if test="year>2005">
<tr bgcolor="#3D9999">
<td>
<!-- Look for link, target to blank, the link text is the tittle pulled from xml -->
<a href="{link}" target="_blank"><xsl:value-of select="title"/></a>
</td>
<td>
<xsl:value-of select="director"/>
</td>
<td>
<xsl:value-of select="year"/>
</td>
<td>
<xsl:value-of select="genre"/>
</td>
<td>
<xsl:value-of select="movieID"/>
</td>
</tr>
<xsl:if/>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:if/>
应该是 </xsl:if>
因为它是结束标记而不是自引用标记。
这里是更正后的代码:
<?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="html" indent="yes"/>
<xsl:template match="/">
<html>
<!-- Background image -->
<body background="bgimage.jpg">
<h2 style="color:#47B2B2">My Movie Collection</h2>
<!-- set border, color, and padding-->
<table border="1" bgcolor="#0A1A1A" cellpadding="5">
<tr bgcolor="#1F4C4C">
<!-- Set order -->
<th>Title</th>
<th>Director</th>
<th>Year</th>
<th>Genre</th>
<th>ID</th>
</tr>
<xsl:for-each select="movies/movie">
<!-- Sort by title -->
<xsl:sort select="title"/>
<xsl:if test="year > 2005">
<tr bgcolor="#3D9999">
<td>
<!-- Look for link, target to blank, the link text is the tittle pulled from xml -->
<a href="{link}" target="_blank"><xsl:value-of select="title"/></a>
</td>
<td>
<xsl:value-of select="director"/>
</td>
<td>
<xsl:value-of select="year"/>
</td>
<td>
<xsl:value-of select="genre"/>
</td>
<td>
<xsl:value-of select="movieID"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>