加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读