【发布时间】:2011-06-30 21:54:06
【问题描述】:
是否有适用于 YAML 的架构验证语言?我用谷歌搜索,但找不到任何有用的东西。
像 XSD 格式,使用语言本身来描述模式,在我的情况下是最好的选择。
【问题讨论】:
标签: validation xsd schema yaml
是否有适用于 YAML 的架构验证语言?我用谷歌搜索,但找不到任何有用的东西。
像 XSD 格式,使用语言本身来描述模式,在我的情况下是最好的选择。
【问题讨论】:
标签: validation xsd schema yaml
JSON Schema 可以与大多数 YAML 文档一起使用,从而产生比 Rx 或 Kwalify 更便携和更好记录的解决方案。 JSON Schema 是我能够找到 editor support 的三个中唯一的一个。
更多information on using YAML and JSON Schema including tools and editor support is tracked on this page。在撰写本文时,Visual Studio Code 中提供了编辑器支持,并通过 npm 提供了基于命令行的验证工具。
完全披露:我创建了上面链接的网站,试图使 JSON Schema 应用于 YAML 更容易被发现。我还为 VS Code 编写了一个编辑器扩展,该扩展已被上面链接的 RedHat 扩展所取代。
【讨论】:
我想知道为此重用 JSON 模式是否有意义。 YAML 可以轻松转换为 JSON 而不会丢失任何信息 (?),因此理论上 YAML 可以通过相同的工具链进行验证,从而允许开源社区专注于一个好的模式工具链。架构本身也可以用 YAML 编写并转换为 JSON。
【讨论】:
好主意。谷歌搜索了这个,因为我也在寻找相同的东西。
可以以定义的方式将 YAML 转换为 XML(类似于 JSON XML)并使用标准 XML 验证器进行验证。
根据您的平台,有用于该转换的工具或 sn-ps:JavaScript (NPM)、Ruby、Java (Jackson)、Java (TestNG)(您需要查看其所需参数的来源)。
如果使用 API 完成,甚至可以将错误位置映射回原始 YAML 文件。
【讨论】:
您可以使用这个 python ysd 项目来验证您的 yaml 文件。 https://github.com/yonahd/ysd 超级简单好用
python yaml-validator/main.py -v yamls/example-values.yaml -r yamls/example-rules.yaml
示例规则文件:
required: // field must exist and type must match
env: str
enabled: bool
replicas: int
optional: // if field exists type must match
disk: str
示例 yaml 文件(helm values 文件):
network:
service:
port: 8060
enabled: true
image:
app: my-app:build
replicas: 1
env: dev
disk: local
【讨论】: