如果没有给出参数,如何忽略添加到 XSLT 文件中的参数?
Posted
技术标签:
【中文标题】如果没有给出参数,如何忽略添加到 XSLT 文件中的参数?【英文标题】:How to ignore param added to XSLT file if no param given? 【发布时间】:2020-02-09 13:58:16 【问题描述】:在我的 XSLT 文件中,我必须添加一个参数,让用户选择书籍的“流派”,这是从下拉列表中选择的,然后单击一个按钮以将 XSLT 参数更新为所选流派
<xsl:apply-templates select="ListOfItems/*[Genre = $Genre]"/>
我的 XML 文件如下所示:
<ListOfItems>
<Product>
<Title>Book A</Title>
<Price>15</Price>
<Author>J Smith</Author>
<Genre>Medical</Genre>
</Product>
... etc
</ListOfItems>
用户从下拉列表中选择流派并按下按钮
Protected Sub loadGenre_Click(sender As Object, e As EventArgs) Handles loadGenre.Click
Dim xslArg As XsltArgumentList = New XsltArgumentList()
xslArg.AddParam("Genre", "", "" + genreSelect.Text)
Me.xmlProducts.TransformArgumentList = xslArg
End Sub
我的问题是我希望最初显示所有产品,有没有办法根据用户是否选择了一种类型来打开和关闭 XSLT 参数?
【问题讨论】:
【参考方案1】:You should be able to use an xsl:if statement like:
```
<xsl:if test="$Genre = ''">
<xsl:apply-templates select="ListOfItems/*"/>
</xsl:if>
<xsl:if test="$Genre != ''">
<xsl:apply-templates select="ListOfItems/*[Genre = $Genre]"/>
</xsl:if>
```
you could also use `<xsl:choose>`
【讨论】:
太棒了!这种工作,我用有效的代码提出了一个编辑请求。我找不到 ELSE 标签,所以我使用了两个 if 并再次检查了条件。 @Ari 如果您需要 ELSE,请使用xsl:choose
。
还请注意,您可以将其简化为单行:<xsl:apply-templates select="ListOfItems/*[Genre = $Genre or $Genre='']"/>
- 如果您喜欢那种东西。以上是关于如果没有给出参数,如何忽略添加到 XSLT 文件中的参数?的主要内容,如果未能解决你的问题,请参考以下文章