微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml – 如何将参数传递给XSLT?

我有个问题.

我有一个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文件并将它们作为管道运行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。