写点什么

你难道还没有用 RELAX-NG 吗?

  • 2007-10-30
  • 本文字数:523 字

    阅读完需:约 2 分钟

RELAX-NG (读音是“relaxing”)也是一种 XML schema 定义语言,它的主要特征是比目前通用的基于 DTD 或是 XSD 的语言要简洁优雅的多。W3C XML Schemas 已经因为“卓越”的复杂性而臭名昭著了,许多 XML 大师都对此表示过不满,Tim Bray评论说:

W3C XML Schemas (XSD) 烂透了。又难读,又难写,还不容易理解,交互性也成问题,而且你想用 XML 来做的很多事情都没法描述出来。

Griffin Brown 最近列出了使用RELAX-NG,而不是W3C XML Schema 来进行XML 建模的 10 条原因,把网络上散落的对 RELAX-NG 的赞誉做了归纳。如下所示:

  1. “好的规格说明就意味着好的交互性”。
  2. “提供了简洁的语法”(RELAX-NG 支持使用 DSL 来精确的描述约束条件,而不是使用尖括号)。
  3. “它的规范是一个稳定的 ISO 标准”。
  4. “没有 PSVI”(PSVI 被认为是有害的)
  5. “没有给内容提供默认值”。
  6. “更好的数据类型支持”。
  7. “更加完善的模型”
  8. “更加完善的语法校验”
  9. “文档实例没有依赖性 _”。_
  10. 正在获得越来越广泛的应用”。

我们可以使用“ Sun Multi-Schema Validator ”工具来将 XSD 文件转换成 RELAX-NG(.RNG)格式,该工具会生成比较冗长的.RNG 文件。而后可以使用 Trang 来把它们转换成更加简洁的格式。查看英文原文 Should you be using RELAX-NG?

2007-10-30 20:091699
用户头像

发布了 197 篇内容, 共 60.4 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
发现更多内容

Spring Boot工程中如何优雅地处理异常

sean77

spring 整洁代码

盘点 2021| 不忘初心,未来之路,与君共勉

法医

前端 盘点 2021

Apache APISIX 结合 Authing 实现集中式身份认证管理

API7.ai 技术团队

api 网关 Apache APISIX Authing 身份验证

杜甫草堂

wood

300天创作

netty系列之:真正的平等–UDT中的Rendezvous

程序那些事

Java Netty 程序那些事 1月月更

工作中遇到的50个JavaScript的基础知识点

Sunshine_Lin

面试 前端 进阶 基础

倒计时1天 | 超百位技术大咖齐聚开发者大会,与全球开发者一起“数聚未来”

OceanBase 数据库

OceanBase 开源 开发者大会

error: ‘slots_reference’ was not declared in this scope

Ayosh

OpenCV

Java Jackson 中的 JsonNode 和 ObjectNode

HoneyMoose

Kubernetes生态,从繁荣走向碎片化

巨子嘉

容器 云原生

教你实现一个 iOS 重签名工具

37手游iOS技术运营团队

ios xcode

明道云虹桥演示中心,欢迎进店!

明道云

Avue复选框动态赋值不能渲染问题解决方式

泉城老铁

前端 avue

使用LNMP环境部署码云测试项目

咿呀呀

lnmp

数据分析人员需要掌握SQL到什么程度?3个常考题目刷一刷

博文视点Broadview

Avue中如何对option中属性动态赋值

泉城老铁

前端 avue

开源实践 | 携程在 OceanBase 的探索与实践

OceanBase 数据库

OceanBase 开源 客户案例 携程

【LeetCode】奇偶树Java题解

Albert

算法 LeetCode 1月月更

AWS 上传的 S3 文件重新载入的时候简体中文显示乱码

HoneyMoose

设计模式【8】-- 手工耿教我写装饰器模式

秦怀杂货店

Java 设计模式 装饰器

ReactNative进阶(四):ReactNative 原理剖析之JS 层渲染 diff 算法

No Silver Bullet

React Native 渲染性能 1月月更

Kafka往事——揭露Kafka推出Kafka Streams背后原因

Kafka中文社区

关于ant design pro的权限方案设计

袋鼠云数栈

大数据

Java Jackson 中的 mapper

HoneyMoose

【LeetCode】 替换所有的问号Java题解

Albert

算法 LeetCode 1月月更

阿里云万郁香:多样付费选择构筑成本最优的弹性体验

阿里云弹性计算

阿里云 年度峰会 付费方式

服务发现与配置管理高可用最佳实践

阿里巴巴云原生

阿里云 微服务 高可用 云原生 MSE

《LeetCode刷题》数组与队列

IT蜗壳-Tango

IT蜗壳教学 1月月更

面试突击13:方法优先调用可选参数还是固定参数?

王磊

java面试 2022

一键抠除路人甲,昇腾CANN带你识破神秘的“AI消除术”

华为云开发者联盟

CANN 昇腾 图像消除 智能实例分割 CRA算法

一个cpp协程库的前世今生(十一)等待与返回值

SkyFire

c++ cocpp

你难道还没有用RELAX-NG吗?_架构_Gavin Terrill_InfoQ精选文章