xml – 如何将参数传递给XSLT?
发布时间:2020-12-16 23:15:02 所属栏目:百科 来源:网络整理
导读:我有个问题. 我有一个XML文件,其中包含有关100门课程的信息. 我有一个XSL文件很好地显示了100个课程的列表. 但是,如果我只想显示1门课程怎么办?我可以将参数传递给XSLT文件,告诉它只显示“ENGL 100”吗? XML看起来像这样: documentmenu item nameMTH 300/
我有个问题.
我有一个XML文件,其中包含有关100门课程的信息. 我有一个XSL文件很好地显示了100个课程的列表. 但是,如果我只想显示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文件并将它们作为管道运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |