当前位置: 首页 > 知识库问答 >
问题:

XSLT 1.0 not(包含在每个

华和悦
2023-03-14

我想包括以下内容:

not(contains(country/product/@genericname, 'Color Purple'))

在此中,每个

<xsl:for-each select="country[@name = 'GB']/product[@category = 'inkjet' and contains(@classification, 'consumer') or contains(@classification, 'businessinkjet')]">

我试过这个:

<xsl:for-each select="not(contains(country/product/@genericname, 'Stylus Pro')) and country[@name = $country]/product[@category = 'inkjet' and contains(@classification, 'consumer') or contains(@classification, 'businessinkjet')]">

但是,我得到了这个错误:该值不是一个节点集。我没有看到语法错误。

处理器:Saxon6.5.5

@michael.hor257k

我改编了你的片段,看起来更合适——每个都有我的参数

<xsl:param name="country">GB</xsl:param>
<xsl:for-each select="country[@name = $country]/product[@category = 'inkjet' and contains(@classification, 'consumer') or contains(@classification, 'businessinkjet')] [not(contains(country/product/@genericname, 'Stylus Pro'))]">

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<countries>
    <country name="GB">
        <product genericname="Yellow line" id="12345" />
        <product genericname="Red line" id="6789" type="device" />
        <product genericname="This is Stylus Pro" id="256464" />
    </country>
</countries>

编辑

这里是正确的方式,谢谢,是错误的方式。

<xsl:for-each select="country[@name = 'GB']/product[@category = 'inkjet' and contains(@classification, 'consumer') or contains(@classification, 'businessinkjet')] [not(contains(**@genericname**, 'Stylus Pro'))]">

非国家/产品/@genericname

谢啦


共有1个答案

富凯旋
2023-03-14

not(contains())需要在谓词中(方括号内)。在谓词之外,需要有一条指向节点的路径。发布一个XML代码示例以获得更具体的答案。

我猜这可能是你想要的:

<xsl:for-each select="country[@name = 'GB']/product[@category = 'inkjet' and contains(@classification, 'consumer') or contains(@classification, 'businessinkjet')] [not(contains(@genericname, 'Color Purple'))]">

请注意,路径指向产品,谓词限制要包含在选择中的产品类别。

XSLT对上下文非常敏感。

[not(contains(@genericname, 'Stylus Pro'))]

与非常不同:

[not(contains(country/product/@genericname, 'Stylus Pro'))] 

第一个检查当前节点的genericname属性。在以下情况下:

select="country[...]/product[...]"

当前节点是产品

第二个查看名为产品的节点的Genericname属性,该节点是国家的子节点,也是当前节点的子节点。此属性不存在-因此当然它不包含搜索字符串。

 类似资料:
  • 所以我有一个练习问题,我应该用员工的信息创建一个数组,并将其传递给类;我的代码有一个问题,我似乎想不出来。 代码的目的是:将代码中看到的信息放入数组,然后传递给类中的方法,然后打印给用户。(类中的代码非常好,因此这里没有包括它)。

  • 正在寻找旧JSF页面的解决方案。我试图使用contains方法根据另一列是否包含单词red box来呈现组合框。 这一个工作和组合框被禁用。 但是,我也想在值不包含红色框时渲染它们,但随后将启用combox。 这是行不通的。 因此,我如何测试的任何想法都不包含特定的单词。我还尝试了choose test when,但由于第一个表。col4值只是一个空字符串。 有什么想法吗?谢谢。

  • 我试图在R降价报告中加入我的公司标志。输出必须为pdf。该徽标必须用作文件左上角报告每页的模板。例如,您可以使用此google徽标https://en.wikipedia.org/wiki/Google#/media/File:Google_2015_logo.svg 我希望报告看起来像这样(很抱歉图像模糊,但我只想举个例子)- 左上角的谷歌标志应该出现在每个页面上。 我已经进行了搜索,但我所做的

  • Includes 允许你静态包含一段Jade, 或者别的存放在单个文件中的东西比如css, html。 非常常见的例子是包含头部和页脚。 假设我们有一个下面目录结构的文件夹: ./layout.jade ./includes/ ./head.jade ./tail.jade 下面是 layout.jade 的内容: html include includes/head

  • 问题内容: 我需要执行django查询,以检查字段是否包含列表中的所有值。该列表的长度将有所不同 例 问题答案: 对于python 3

  • 问题内容: 我正在尝试打开文件并创建一个列表,其中每行都从文件中读取。 但是由于这样说,这个示例代码给了我一个错误。我这是什么问题 我如何编写代码以增加InFile中每个新行的列表数? 问题答案: 比这容易得多: 这将返回文件中每一行的列表。