首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >报告是否有超过10美元的小说书籍的超级有效的方法

报告是否有超过10美元的小说书籍的超级有效的方法
EN

Stack Overflow用户
提问于 2015-01-07 12:55:08
回答 2查看 66关注 0票数 0

我的XML文档包含一系列不同类型的图书元素(小说、非小说等)。

我希望创建一个输出true的XSLT模板,如果:

  1. 没有小说书。
  2. 有小说类书籍,每本书的价格都低于或等于10.00美元

我希望模板输出false,如果:

  1. 有些小说书的价格超过10.00美元

我下面的模板做了这个工作,但我希望你能提供一个更有效的解决方案。我的模板需要很多步骤来解决这样一个简单的问题。我怀疑我的模板在大量数据中的性能会很差。你能为这个问题提供一个超级有效的解决方案吗?

这是我的模板:

代码语言:javascript
复制
<xsl:template match="Books">
    <xsl:variable name="fiction-books" select="Book[Genre eq 'Fiction']" />
    <xsl:variable name="no-fiction-books-that-cost-more-than-10-dollars" select="not(exists(Book[Genre eq 'Fiction'][number(Cost) gt 10.00]))" />
    <xsl:variable name="no-fiction-books" select="not(exists($fiction-books))" />

    <xsl:value-of select="$no-fiction-books or $no-fiction-books-that-cost-more-than-10-dollars" />
</xsl:template>

下面是一个示例输入( XSLT应该与此输入一起输出false ):

代码语言:javascript
复制
<Books>
    <Book>
        <Title>ABC</Title>
        <Genre>Fiction</Genre>
        <Cost>10.00</Cost>
    </Book>
    <Book>
        <Title>DEF</Title>
        <Genre>Fiction</Genre>
        <Cost>20.00</Cost>
    </Book>
</Books>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-07 13:03:23

如果以下情况,我希望模板输出false:

  1. 有些小说书的价格超过10.00美元

不如:

代码语言:javascript
复制
<xsl:template match="/Books">
    <xsl:value-of select="not(Book[Genre='Fiction']/Cost >10)" />
</xsl:template>

注意,输出不是XML。

票数 1
EN

Stack Overflow用户

发布于 2015-01-07 15:43:32

您可以简单地使用

<xsl:value-of select="count(Book[Genre='Fiction'][Cost &gt; 10]) = 0" />

这包括所有Genre‘虚构’Cost大于'10'的书。然后检查该计数是否等于0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27820004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档