ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

xpath

rosshadden 全部

Sublime Text插件,使用XPath 1.0简化XML和HTML文件的 cursosre 导航。

详细信息

  • 2.6.1
    0.1.0
  • github.com
  • github.com
  • 7年前
  • 2小时前
  • 9年前

安装

  • 总数 25K
  • Win 16K
  • Mac 6K
  • Linux 3K
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日 6月22日
Windows 7 9 8 5 9 10 3 7 6 5 6 7 9 7 11 8 4 3 3 7 9 8 6 6 7 8 7 6 13 5 4 5 9 5 0 3 5 6 9 5 3 12 10 9 5 3
Mac 1 2 0 0 1 1 1 3 0 0 1 3 3 2 2 3 0 0 4 1 1 4 2 0 4 1 9 7 1 2 1 1 1 0 3 3 1 1 2 2 1 1 3 0 0 0
Linux 0 0 1 0 1 0 0 0 1 1 0 0 1 2 2 2 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 2 0 0 0 2 0 0 2 0 0

README

源代码
raw.githubusercontent.com

Sublime Text - XPath 插件

特性

  • 更新状态栏文本为第一个选择的XPath。
  • 将光标处的XPath复制到剪贴板。
  • 将选择跳转到相关标签 - 上一个或下一个兄弟,父级或自身。为什么是“自身”,你可能会问?因为还可以选择 opening 标签,关闭标签,两者开合标签,开合标签的属性以及整个标签内容 - 可选包括标签本身。这当然也适用于多重选择。
  • 通过XPath 1.0表达式查询XML和(X)HTML文档。
    • 带语法高亮和智能自动完成
    • 带自定义print函数,可用于将节点集等记录到控制台作为调试辅助。
    • 实时显示结果(即您在输入查询的同时,完美地结合了Sublime的其他动作)。(如果需要,可自定义此功能。)
    • 将光标移到突出显示的结果。
    • 使用$contexts变量引用多重上下文节点(光标位置)。
    • 执行查询并选择文档中所有相应的节点。(命令面板中有重复运行上一查询和选择所有结果的选项,但请注意,它目前不会保留上下文节点。)
    • 带有历史记录,可全局或按文档。
    • 可选,在显示文本结果时规范化空白(通过设置)。
    • 在设置文件中定义自定义变量。
  • 显示XML良好形成性解析错误,并将光标移动到错误发生的位置。
  • 整理HTML或“标签糊糊”为有效XML。

设置

请查看默认设置以获取详细信息及默认值。

  • show_hierarchy_only - 是否仅在状态栏中显示层级,而不是精确xpath。例如,显示为/Root/Node而不是/Root/Node[3]
  • show_all_attributes - 是否在路径中显示所有属性。如果为false,将使用提供的白名单。
  • case_sensitive - 当确定标签索引以及一个属性是否与白名单中定义的属性匹配时,是否忽略大小写。当查询xpath时忽略。
  • copy_unique_path_only - 当有多个选择时,是否仅复制唯一的xpath到剪贴板。
  • attributes_to_include - 要包含在XPath中的特定属性或命名空间。
  • show_attributes_in_hierarchy - 当处于层级模式时,是否包含属性。如果show_all_attributes为false且attributes_to_include白名单为空,则此设置不起作用。
  • live_mode - 是否在键入时显示XPath查询的结果。如果为false,则仅在用户按下输入框中的enter键后显示结果。
  • default_namespace_prefix - 当XML文档包含无前缀的默认命名空间时使用的前缀。例如:`<` XPath 1.0不支持空白前缀,因此,为了方便,此插件可以为您设置一个。
  • show_namespace_prefixes_from_query - 当存在空白命名空间前缀(见default_namespace_prefix)或多个命名空间URI被同一前缀引用时,插件将自动使它们唯一,这样您就可以轻松地在查询中使用它们。如果开启此选项,状态栏和剪贴板中显示的xpath将由本插件直接查询。如果关闭此选项,路径中的元素名称将反映源文档中的元素名称。
  • only_show_xpath_if_saved - 如果视图不是已修改的,是否仅在状态栏中显示当前xpath。这可以在编辑文档时节省CPU周期(由于不断解析),非常有用。
  • max_results_to_show - XPath查询要显示的结果的最大数量。设置为<=0以无限制。当结果较多时,很有用,可以加快显示速度。
  • normalize_whitespace_in_preview - 是否在预览中对文本结果中的空白进行标准化。默认为false,因为在某些情况下,看到确切的结果很重要。
  • variables - 自定义变量的字典,当编写XPath查询表达式时可以使用。
  • auto_completion_triggers - 当输入XPath表达式时,键入这些字符将自动显示自动完成。如果为空,仍然可以手动触发自动完成。
  • intelligent_auto_complete - 是否从文档中包含智能自动完成建议。
  • goto_element - 当通过XPath查询选择元素时,光标应移动到它的哪个部分。可能的值有
    • open - 选择开放标签中的元素名称。
    • close - 选择关闭标签中的元素名称。
    • names - 选择开放和关闭标签中的元素名称。
    • open_attributes - 选择开放标签中的所有属性。
    • content - 选择元素的内容。
    • entire - 选择整个元素,即它的开放标签、内容和关闭标签。
    • none - 不移动光标。
  • goto_attribute - 当通过XPath查询选择属性时,光标应移动到它的哪个部分。可能的值有
    • name - 选择属性的名称。
    • value - 选择属性值(在引号内)。
    • entire - 选择属性的名字和值。
    • element - 使用 goto_element 规则选择属性所属的元素。
    • none - 不移动光标。
  • sgml_selector - 用于确定将什么解析为XML,并启用XPath函数的范围选择器。默认为HTML和XML,不包括ASP和PHP等。
  • show_xml_parser_errors - 在状态栏中显示或在解析文档时遇到的错误。如果您还有其他也显示XML解析/验证错误的插件,则请禁用。

默认没有设置快捷键,但包含了一个示例 sublime-keymap 文件,以显示可用的命令和参数。有关ST3中快捷键的更多信息,请参阅此文档

演示

  • 自动完成操作 自动完成操作
  • 将光标移动到单个突出显示的结果 将光标移动到结果
  • 之前XPath查询结果的示例用法 将光标移动
  • 将光标下的节点(的)XPath复制到剪贴板 将XPath复制到剪贴板
  • 处理多个上下文节点 多个上下文节点
  • 清洁坏的HTML/标记汤 清洁标记汤

安装

推荐安装Sublime Text XPath插件的方式是通过Package Control。Package Control将在您的系统中安装该插件并保持其更新。

  1. 确保Package Control已安装。
  2. 在Sublime Text中,打开首选项菜单,并选择Package Control
  3. 选择Package Control: 安装插件
  4. 开始输入xpath。当您看到它时,选择它。
  5. 等待其安装。
  6. 重新启动Sublime Text,以确保已正确加载所有内容。
  7. 享受吧!

故障排除

CDATA节点

当处理XML文档时,您可能熟悉文档对象模型(DOM),其中CDATA节点与文本节点分开。XPath将text()节点视为所有相邻的CDATA和文本节点兄弟一起。如果您确实需要在XPath中处理分离的文本和CDATA节点,您需要确保源文档中的节点之间有一个XML注释分离它们。

示例

<hello><![CDATA[world]]>foobar</hello>
<hello><![CDATA[world]]>foobar</hello>

在第一个示例中的XPath /hello[1]/text()将返回一个文本节点:worldfoobar。在第二个示例中,它将返回两个文本节点:worldfoobar。更多信息可以在此Stack Overflow问答中找到。

命名空间

XPath 1.0没有默认命名空间的概念。因此,如果正在查询的XML文档中的节点定义了默认命名空间,则应将此命名空间映射到XPath查询表达式中的前缀,以便更容易访问。此插件将为您自动完成此操作。有关详细信息,请参阅包含的example_xml_ns.xml文件。

根元素之前的节点

请注意,由于ElementTree(Python XML模块)的工作方式,位于文档根节点之前的注释、处理指令或文档类型等将无法通过此插件进行导航。

潜在的改进方向

功能请求、错误报告/修复以及可用性建议总是受欢迎。

不分先后,以下是本插件如何变得更加出色的想法

  • 优化用户对底层XML文档进行的修改,特别是那些不改变文档结构的修改。目前,每次用户对文档进行微小更改(即在输入时按下的每个字符)都会重新解析整个文档。(虽然连续的快速更改意味着它将中止进行中的解析,以包括最新的更改重新开始。)
  • 与优秀的BracketHighlighter插件集成?对于效率来说——因为我们已经存储了每个标签的位置,并且它将克服BH拥有的大标签间距离限制。它还可以在两个插件都已安装的情况下删除一些重复的导航功能。
  • 允许在sublime-settings文件中定义自定义XPath函数。
  • 允许将变量定义为(绝对)XPath表达式,这些表达式将被评估为节点集合。

贡献者