我正在使用XSL样式表将xml文档转换为Android环境中的html。
<?xml version="1.0" encoding="UTF-8"?>
<list>
<project id="Proj02">
<observation id="Proj02_Obs001">
…
</observation>
</project>
<project id="Proj01">
<observation id="Proj01_Obs002">
…
</observation>
<observation id="Proj01_Obs001">
…
</observation>
</project>
</list>
对于我的html文件,我想迭代所有对特定项目的观察。为此,我传递了项目@ id的参数:
transformer.setParameter("projID", "Proj01")
使用xsl文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:param name="projID" />
<html>
<body>
<table>
<tr>
<th style="text-align:left">ID</th>
…
</tr>
<xsl:for-each select="list/project[@id=$projID]/observation">
<tr>
<td>
<xsl:value-of select="@id" />
</td>
…
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我没有结果。
我如何修改此行?
<xsl:for-each select="list/project[@id=$projID]/observation">
感谢您的帮助!
答案 0 :(得分:4)
如果要将外部参数传递给样式表,xsl:param
语句必须是xsl:stylesheet
的子句
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="projID" />
<xsl:template match="/">
<xsl:for-each select="list/project[@id=$projID]/observation">
<tr>
<td>
<xsl:value-of select="@id" />
</td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
该参数是全局的,可以在整个样式表中使用。