Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 超级高效的方式来报告是否有成本超过10美元的小说_Xml_Performance_Xslt_Xslt 2.0_Processing Efficiency - Fatal编程技术网

Xml 超级高效的方式来报告是否有成本超过10美元的小说

Xml 超级高效的方式来报告是否有成本超过10美元的小说,xml,performance,xslt,xslt-2.0,processing-efficiency,Xml,Performance,Xslt,Xslt 2.0,Processing Efficiency,我的XML文档由一系列不同类型(小说、非小说等)的书籍元素组成 我想创建一个XSLT模板,在以下情况下输出true: 没有小说 有一些小说,每本售价不到或等于10美元 如果出现以下情况,我希望模板输出false: 有些小说的价格超过10美元 我的模板下面做的工作,但我希望你能提供一个更有效的解决方案。我的模板采取了很多步骤来解决这样一个简单的问题。我怀疑我的模板在处理大量数据时性能会很差。你能为这个问题提供一个超级高效的解决方案吗 这是我的模板: <xsl:template match="

我的XML文档由一系列不同类型(小说、非小说等)的书籍元素组成

我想创建一个XSLT模板,在以下情况下输出
true

  • 没有小说

  • 有一些小说,每本售价不到或等于10美元

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

  • 有些小说的价格超过10美元
  • 我的模板下面做的工作,但我希望你能提供一个更有效的解决方案。我的模板采取了很多步骤来解决这样一个简单的问题。我怀疑我的模板在处理大量数据时性能会很差。你能为这个问题提供一个超级高效的解决方案吗

    这是我的模板:

    <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>
    
    如果出现以下情况,我希望模板输出false:

  • 有些小说的价格超过10美元
  • 那么:

    <xsl:template match="/Books">
        <xsl:value-of select="not(Book[Genre='Fiction']/Cost >10)" />
    </xsl:template>
    
    
    
    请注意,输出不是XML。

    您只需使用


    这包括
    类型
    'Fiction'
    成本
    大于'10'的所有书籍。然后检查该计数是否等于0。

    根据您的第二点,给定的输入为“true”,因为一本书的成本小于或等于10。很可能这个简单转换的成本将主要由启动XSLT转换引擎、编译样式表、,以及解析源文档。因此,改进XSLT代码可能是一项毫无意义的工作。
    <xsl:template match="/Books">
        <xsl:value-of select="not(Book[Genre='Fiction']/Cost >10)" />
    </xsl:template>