为什么 XPATH count 函数返回 double 而不是 int?

2024-04-15

以下代码片段产生一个无效转换异常.

    static int XPathCount()
    {
        var doc = new XmlDocument();
        doc.LoadXml(
        @"<root>
             <item>value1</item>
             <item>value2</item>
             <item>value3</item>
          </root>");

        var navigator = doc.CreateNavigator();
        var expression = navigator.Compile("count(//item)");
        var count = navigator.Evaluate(expression);
        return (int) count;
    }

我对这种行为感到惊讶,所以我看起来count()函数进入XPATH规范 http://www.w3.org/TR/xpath/#function-count:

count 函数返回参数节点集中的节点数。

到目前为止一切顺利,但是,什么是number?答案在同一个规范中:

数字(浮点数)

显然这已被修复X路径2.0 http://www.w3.org/TR/xquery-operators/#func-count返回 xs:integer 但我仍然对此感到好奇。

有谁知道为什么 W3C 决定使用十进制数count()功能?


这不是小数。在 XPath 1.0 中它是一个 IEEE 双精度浮点数,在 XPath 2.0 中它是一个整数。

XPath 1.0 具有单一数字类型,其原因与 Javascript 相同:在弱动态类型语言中,它具有相当大的意义。此外,在设计 XPath 1.0 时,Javascript 被认为是宿主语言的主要候选者,这就是数据类型与 Javascript 保持一致的原因。

如果您只有一种可用的数字类型,那么这就是 count() 必须返回的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 XPATH count 函数返回 double 而不是 int? 的相关文章

  • EventHandler 应该始终用于事件吗?

    我一直在愉快地使用自定义委托类型和通用编写事件Action委托类型 没有真正考虑我在做什么 我有一些很好的扩展助手Action and EventHandler这使我倾向于使用那些预定义的委托类型而不是我自己的委托类型 但除此之外 除了惯例
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • XPath JMeter 断言:错误“前缀必须解析为命名空间”

    我正在尝试使用JMeter XPath 断言 https jmeter apache org usermanual component reference html XPath Assertion使用 XPath 断言命令对标签值进行如下操
  • 关闭整数的最右边设置位

    我只需要关闭最右边的设置位即可 我的方法是找到最右边位的位置 然后离开该位 我编写这段代码是为了这样做 int POS int n int p 0 while n if n 2 0 p else break n n 2 return p i
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • C 类型命名约定,_t 或 ALLCAPS

    我一直想知道是否有任何命名约定 例如何时对类型使用全部大写以及何时追加 t 什么时候不使用任何东西 我知道当时 K R 发布了各种有关如何使用 C 的文档 但我找不到任何相关内容 在 C 标准库类型中 t看起来漂亮占主导地位 time t
  • 提升mapped_file_source、对齐方式和页面大小

    我正在尝试在性能很重要的上下文中解析一些大小高达几百兆字节的文本文件 因此我使用 boostmapped file source 解析器期望源以空字节终止 因此我想检查文件大小是否是页面大小的精确倍数 如果是 则使用较慢的非内存映射方法 我
  • 检测 TextBox 中的 Tab 键按下

    I am trying to detect the Tab key press in a TextBox I know that the Tab key does not trigger the KeyDown KeyUp or the K
  • 如何对STL向量进行排序?

    我想排序一个vector vector
  • 选择 asp.net CheckBoxList 中的所有项目

    ASP NET 和 C 我想要一个带有 全选 项目的复选框列表 当这个特定项目是 已选择 所有其他都将被选择 也 当选择被删除时 这个项目 也将来自所有人 其他物品 选中 取消选中 任何其他项目只会有一个 对特定项目的影响 无论选择状态如何
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 时间:2019-03-17 标签:c#TimerStopConfusion

    我想通过单击按钮时更改文本颜色来将文本框文本设置为 闪烁 我可以让文本按照我想要的方式闪烁 但我希望它在闪烁几次后停止 我不知道如何在计时器触发几次后让它停止 这是我的代码 public Form1 InitializeComponent
  • 与 Entity Framework Core 2.0 的一对零关系

    我正在使用 C 和 NET Framework 4 7 将 Entity Framework 6 1 3 Code First 库迁移到 Entity Framework Core 我一直在用 Google 搜索 Entity Framew
  • 解释这段代码的工作原理;子进程如何返回值以及在哪里返回值?

    我不明白子进程如何返回该值以及返回给谁 输出为 6 7 问题来源 http www cs utexas edu mwalfish classes s11 cs372h hw sol1 html http www cs utexas edu
  • 值和类型的简洁双向静态 1:1 映射

    我将从我想象如何使用我想要创建的代码开始 它不必完全像这样 但它是我在标题中所说的 简洁 的一个很好的例子 就我而言 它是将类型映射到相关的枚举值 struct bar foo
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • Emacs C++,打开相应的头文件

    我是 emacs 新手 我想知道 是否有在头文件 源文件和相应的源文件 头文件之间切换的快捷方式 是否有像通用 emacs 参考卡那样的参考卡 Thanks There s ff find other file 您可以使用以下方法将其绑定到
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • 复选框的勾选或取消勾选事件上的Javascript?

    是否可以在勾选复选框时触发一个事件 而在未勾选复选框时触发另一个事件 目前我正在使用 booking checkboxes on change input function 但我想知道该复选框是否刚刚更改为选中状态 或者只是更改为未选中状态
  • 字符串类型的枚举与具有静态常量的结构

    似乎当需要使用枚举 字符串类型 时 也可以使用使用静态字段的结构来实现 e g enum Test String case TestCase1 case TestCase2 case TestCase3 or struct Test sta
  • 在 Automator 工作流程中获取网络文章的标题

    我正在尝试创建一个工作流程 使用 Instapaper 将 URL 列表转换为纯文本 然后将文本保存在我的计算机上的文本文档中 到目前为止 我已经能够获取 URL 列表 转换它们并保存文本文档 问题是我不知道如何使用每个网页的名称作为后续文
  • 添加到本地主机数据库的气流连接(在 docker 上运行的 postgres)

    我有一个本地运行的 dockerized postgres 我可以通过 pgAdmin4 和 via 连接到它psql 使用相同的连接详细信息 我在 UI 上设置了气流连接 但是 当尝试加载使用该连接的 DAG 时 它会抛出错误 损坏的 D
  • 使用mutual_info回归进行特征选择时的重塑错误

    我正在尝试使用mutual info regression 和 SelectKBest 包装器进行一些功能选择 然而 我不断遇到一个错误 表明我的功能列表需要重新整形为二维数组 不太确定为什么我不断收到此消息 feature selecti
  • 了解 Python 中的命名元组类型名和 pickle 的问题

    今天早些时候 我在尝试腌制时遇到了麻烦命名元组 http docs python org 2 library collections html namedtuple factory function for tuples with name
  • 。 ObjectStateManager 中已存在具有相同键的对象ObjectStateManager 无法跟踪具有相同键的多个对象

    我试图简单地更新实体对象 然后收到此错误 所有对我所做的错误的谷歌搜索都让我得到了复杂的解释 任何人都可以简单地说一下吗 我正在研究这个简单的教程 http aspalliance com 1919 ASPNET 40 and the En
  • Doxygen 和 Objective-C 类别

    尽管 Doxygen 的最新版本声称可以更好地处理 Objective C 类别 http www doxygen nl manual changelog html 它似乎仍然对我的源代码中的类别感到窒息 我想知道是否有人已经让它正确地记录
  • 使用 Moq 模拟单元测试的异步方法

    我正在测试一种创建 Web 的服务方法API称呼 使用正常的HttpClient如果我还在本地运行 Web 服务 位于解决方案中的另一个项目中 则可以很好地进行单元测试 但是 当我签入更改时 构建服务器将无法访问 Web 服务 因此测试将失
  • 如何在违反唯一约束时返回 Postgres 中的原始行

    在 Postgres 中 如果您尝试插入具有唯一索引的值 您将看到以下内容 duplicate key value violates unique constraint testing email key DETAIL Key email
  • Spring MVC:复杂对象作为 GET @RequestParam

    假设我有一个页面列出表上的对象 并且我需要放置一个表单来过滤表 过滤器作为 Ajax GET 发送到如下 URL 而不是在我的控制器上有很多参数 例如 RequestMapping value action public ResponseB
  • 如果另一列中有匹配的单元格,则 Excel 公式从另一列返回值[重复]

    这个问题在这里已经有答案了 我有两列 如下所示 ID Qty FW01 20 AW08 100 FW01 30 FW01 40 AW55 60 我需要公式在列 ID 中搜索并查找此列中的所有相似单元格 并返回 Qty 列中与此 ID 匹配的
  • 下载 webroot 之外的文件

    好的 首先道歉 因为我意识到这是一个之前已经讨论过很多次的主题 相信我 我知道 我已经阅读了之前的所有问题和答案 但仍然无法使其发挥作用 我有一个包含可下载文件的文件夹 出于安全目的 我将此文件放置在 Webroot 之外 然而 尽管我尽了
  • C++ std::set 更新很乏味:我无法就地更改元素

    我发现更新操作std set乏味 因为没有这样的 API参考参数 http en cppreference com w cpp container set 所以我目前所做的是这样的 find element in set by iterat
  • 如何构建没有声音空安全的APK

    我可以在手机上以发布模式运行应用程序并传递标志 no sound null safety release 但 两者都不flutter build apk enable experiment non nullable nor flutter
  • 如何在 github 上查看整个代码库?

    我想查看 GitHub 上 git 存储库的单个分支中的所有代码 我是一名教授 代码是学生论文的一部分 任何单个提交都只会影响代码的一小部分 如何执行审查 使我能够对任何提交的所有代码进行逐行注释 我相信这个问题与如何制作 github P
  • Symfony2 生产时错误 500 而不是 404

    在我的 Symfony2 项目中 我进入了开发模式正确的 404 异常屏幕 但在生产模式下 我遇到了空白屏幕 HTTP 状态代码为 500 而不是 404 我正在使用位于的自定义错误模板app Resources TwigBundle vi
  • 从 youtube v3 API 获取实际配额限制

    我想从 youtube api 获取我的实际配额限制 有这种可能吗 当我打开这个页面时 我看到了我的极限 但是我怎样才能得到这个呢 不存在此类历史配额使用情况 API 您应该按照以下建议避免配额问题https youtube eng goo
  • AS3 for ios:如何序列化数组然后保存它

    我有一个多维数组 我想序列化它 然后使用共享对象保存它 我尝试了很多事情 但每次都会出现问题 JSON 不能有类型 ByteArray 结果不是 String 那么 SharedObject 不想保存它 共享对象可能不是解决方案的一部分 所
  • 为什么 XPATH count 函数返回 double 而不是 int?

    以下代码片段产生一个无效转换异常 static int XPathCount var doc new XmlDocument doc LoadXml