报告是否有价格超过 10 美元的小说书的超级有效方法
Super-efficient way to report on whether or not there are fiction books costing more than $10
我的 XML 文档包含一系列不同类型(小说、非小说等)的书籍元素
我想创建一个输出 true
if:
的 XSLT 模板
没有小说。
有小说书籍,每本价格低于或等于 $10.00
我希望模板输出 false
如果:
- 有些小说的价格超过 10.00 美元
我下面的模板可以完成这项工作,但我希望您能提供更有效的解决方案。我的模板需要很多步骤来解决这样一个简单的问题。我怀疑我的模板在处理大量数据时性能不佳。你能提供一个超高效的解决方案吗?
这是我的模板:
<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
):
<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>
I want the template to output false if:
- There are fiction Books that cost greater than .00
怎么样:
<xsl:template match="/Books">
<xsl:value-of select="not(Book[Genre='Fiction']/Cost >10)" />
</xsl:template>
请注意,输出不是 XML。
您可以简单地使用
<xsl:value-of select="count(Book[Genre='Fiction'][Cost > 10]) = 0" />
计算 Genre
为 'Fiction' 并且 Cost
大于 '10' 的所有书籍。然后检查该计数是否等于 0。
我的 XML 文档包含一系列不同类型(小说、非小说等)的书籍元素
我想创建一个输出 true
if:
没有小说。
有小说书籍,每本价格低于或等于 $10.00
我希望模板输出 false
如果:
- 有些小说的价格超过 10.00 美元
我下面的模板可以完成这项工作,但我希望您能提供更有效的解决方案。我的模板需要很多步骤来解决这样一个简单的问题。我怀疑我的模板在处理大量数据时性能不佳。你能提供一个超高效的解决方案吗?
这是我的模板:
<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
):
<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>
I want the template to output false if:
- There are fiction Books that cost greater than .00
怎么样:
<xsl:template match="/Books">
<xsl:value-of select="not(Book[Genre='Fiction']/Cost >10)" />
</xsl:template>
请注意,输出不是 XML。
您可以简单地使用
<xsl:value-of select="count(Book[Genre='Fiction'][Cost > 10]) = 0" />
计算 Genre
为 'Fiction' 并且 Cost
大于 '10' 的所有书籍。然后检查该计数是否等于 0。