我有个问题.
但是,如果我只想显示1门课程怎么办?我可以将参数传递给XSLT文件,告诉它只显示“ENGL 100”吗?
XML看起来像这样:
<document> <menu> <item> <name>MTH 300</name> <brief>Mathematics Skill Development</brief> <description>A course in the fundamentals of ...</description> </item> <item> <name>MTH 301</name> <brief>Basic Algebra</brief> <description>An introduction to algebra,...</description> </item> ...
我知道我可以编写一个名为“eng100.xsl”的XSLT文件来遍历XML并只显示ENG 100,但我不想写几十个这样的文件.
XML是动态的,我能够控制它.我希望XSLT文件是静态的,永远不会改变.
有没有办法将参数传递给XSLT?
解决方法
您可以将参数传递给XSLT,如何完成此操作取决于您的XSLT处理器,但通常作为附加命令参数,如果它是命令行处理器.
您使用声明参数
<xsl:param name="courseName" select"initialValue"/>
然后,您可以在XSLT中测试此参数,并根据其值调用不同的模板.例如,如果参数为空,则调用处理所有元素的当前模板,否则调用仅在项名称等于参数值时处理元素的模板.您可以通过测试来完成此操作
<xsl:template match="item"> <xsl:if test="$courseName=name(./name)"> <xsl:call-template name="yourOriginalTemplate"/> </xsl:if> </xsl:template>
但是通过过滤和格式化,您将两个问题混合在一个文件中.我将从格式中分离XML元素的选择 – 为此有两个xslt文件并将它们作为管道运行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。