JetBrains Rider 2025.2 Help

XPath 中的代码检查

本主题列出了 XPath 中所有可用的 JetBrains Rider 代码检查

您可以在 编辑器 | 检查设置 | 检查严重性 | 其他语言 设置页面  Ctrl+Alt+S 上切换特定检查或更改其严重性级别。

检查

描述

默认严重性

硬编码命名空间前缀

报告与包含冒号( )的字符串比较的 名称() 函数。 此类用法通常表明比较中硬编码了命名空间前缀。 因此,当与使用相同命名空间的其他前缀的 XML 一起运行时,代码将中断。

示例:

<xsl:if test="name() = 'xlink:href'">...<xsl:if>

警告 警告

隐式类型转换

报告预定义的 XPath 类型之间的隐式转换: STRING数字布尔值节点集。 帮助编写对类型表达更清晰的 XSLT 脚本,并防止潜在的细微错误:

示例:

<xsl:if test="foo" />

与不同。

<xsl:if test="string(foo)" />

第一个测试检查元素 "foo" 是否存在(count(foo) > 0) ;而后一个测试仅在元素确实包含任何文本时才会为真(string-length(foo) > 0)。 建议使类型转换更明确。

使用以下选项配置检查:

  • 启用或禁用某些类型之间的隐式转换

  • 始终报告未导致预期类型的显式转换,例如 <xsl:if test="number(foo)" />

  • 通过使用 字符串() 函数作为编写 string-length() > 0 的快捷方式,忽略从 节点集布尔值 的转换。

警告 警告

多余的类型转换

报告不必要的类型转换。 当 字符串()数字()布尔() 函数的参数类型已经与函数的返回类型相同,或者预期的表达式类型是 any 时,类型转换是多余的。 建议移除不必要的转换。

警告 警告

未知的元素或属性名称

报告在 XPath 表达式中使用但在关联的 XML 文件中缺失并且在引用的模式中未定义的元素或属性名称。 此类名称通常是拼写错误的结果,否则可能仅在运行时被发现。

示例:

<xsl:template match="h:txtarea" />

如果 小时 绑定到 XHTML 命名空间,则检查将报告 match 表达式中的这部分为未知的元素名称,因为该元素的正确名称是 "textarea"。

警告 警告

索引为 0 的 XPath 谓词

报告 0 在谓词索引中或与函数 位置() 的比较中的用法。 这种用法几乎总是一个错误,因为在 XPath 中,索引从 1 开始, 0

示例:

//someelement[position() = 0]

//something[0]

警告 警告

最后修改日期: 2025年 9月 26日