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

Exalt

作者: eerohele ST3

用于验证和格式化 XML 文档的 Sublime Text 插件

标签: xml, html, xslt, 验证, 格式化

详细信息

安装

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

读我

源代码
raw.​githubusercontent.​com

Exalt

Exalt 是一个用于验证和格式化 XML 文档的 Sublime Text 插件。

注意: 您可能还想要查看 LSP-lemminx

截图中的主题是 Boxy

功能

即时验证文件

使用 lxml 实时验证 XML、XHTML 和 XSLT 文件,以下是一些验证机制:

Exalt 支持通过 lxml 使用 XML 目录

XSLT 验证

如果当前文件的语言设置为 XSLT,Exalt 会自动根据 Norman Walsh 的 XSLT 样式表 Relax NG 语法进行验证。

XSD 验证

Exalt 使用根元素的 xsi:schemaLocationxsi:noNamespaceSchemaLocation 属性进行验证。

这意味着 Exalt 可以验证类似以下形式的 Maven POM 文件

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>foobar</groupId>

    . . .
</project>

您可能需要设置一个 XML 目录,以避免从互联网获取模式。有关更多信息,请参阅 安装

xml-model 验证

Exalt 还支持 xml-model 处理指令。这意味着您可以在您的 DITA XML 1.2 文档的根元素之前(当然,在 XML 声明之后)有一个类似这样的处理指令

<?xml-model href="urn:dita-ng:dita:rng:topic.rng"
            schematypens="http://relaxng.org/ns/structure/1.0"?>

Exalt将对href虚拟属性中的模式进行验证。它使用您已设置的XML目录来解决href虚拟属性中的路径和schematypens虚拟属性以确定模式的类型。

您还可以在href虚拟属性中使用绝对或相对路径

<?xml-model href="file:///etc/xml/common/schemas/docbook/docbook-5.0/docbook.rng"
            schematypens="http://relaxng.org/ns/structure/1.0"?>


<?xml-model href="../docbook-5.0/xsd/docbook.xsd"
            schematypens="http://www.w3.org/2001/XMLSchema"?>


<?xml-model href="file:///etc/xml/common/schemas/dita/schematron/dita-1.2-for-xslt1.sch"
            schematypens="http://purl.oclc.org/dsdl/schematron"?>

如果您的文件无法验证,您可以通过按下⌘ + Ctrl + E跳转到验证错误,如果它尚未在视图中显示。

格式XML和HTML文件

按下⌘ + Ctrl + X以重新格式化(美化打印)XML或HTML文件。如果您没有选择任何内容,Exalt将格式化整个文档。如果您有一个或多个选择,Exalt将格式化这些选择。

注意:在格式化选择时,Exalt假定该选择是格式良好的XML片段。它将尝试恢复,但如果您的选择不是格式良好的,结果可能不是您想要的。

Exalt尝试通过libxml2的recover标志来格式化非格式良好的XML文件。

模式缓存

为了性能,Exalt会缓存它使用的模式。如果您正在处理使用大型模式或模式存储在计算机以外的位置的XML文档,这将非常有用。

但是,这意味着如果您正在开发模式,模式中的更改直到您清除Exalt模式缓存才会生效。

要清除模式缓存,通过Sublime Text命令调色板运行Exalt: Clear Parser Cache命令。如果您经常这样做,您可能想将此命令添加到Sublime Text设置中的快捷键。

安装

  1. 通过Package Control安装Exalt.
  2. 重启Sublime Text。
  3. (可选,但推荐) 在User/Exalt.sublime-settings中,设置您的XML目录文件的路径。

    例如

    {
      "xml_catalog_files": ["/etc/xml/catalog", "~/.schemas/catalog.xml"]
    }
    

    默认情况下,插件使用在Exalt/Exalt.sublime-settings中定义的目录文件。这些目录文件可能在您的系统中存在或不存在。

    如果您愿意,可以使用我的catalogs存储库来安装一组常用XML目录和模式。只需将此插件的xml_catalog_files设置指向您克隆存储库中的catalog.xml文件。

    或者,您可以将catalogs克隆到/etc/xml,并创建含有以下内容的/etc/xml/catalog.xml

    <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
      <nextCatalog catalog="catalogs/catalog.xml"/>
    </catalog>
    

    如果您这样做,您不需要设置xml_catalog_files设置。

    注意:如果您以任何方式更改XML目录,您需要重新启动Sublime Text 3才能使更改生效。

已知问题

  • 由于libxml2的问题#573483#753970#753997,可用的所有验证方法对DITA 1.3文件都不起作用。
  • ISO Schematron验证并不总是正确报告错误位置。

致谢