使用参数为每个的XSL
问题描述:
我正在使用XSL样式表来在android环境中将xml文档转换为html。使用参数为每个的XSL
<?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">
感谢您的帮助!
答
如果你传递一个外部参数样式表时,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>
的参数是那么全球的一个孩子,可以在整个样式表中使用。
哇,太棒了!感谢这非常快速的答案。适合我! – Nico