问题标签 [relaxng]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
169 浏览

xml - 是否可以通过 RelaxNG 强制使用 CDATA?

我正在寻找一种使用 RelaxNG 来要求 XML 文档中的元素填充 CDATA 的方法。

我没有在使用 W3C XML Schema Datatypes with RELAX NG或datatype library的指南中看到它。

是否可以?

0 投票
1 回答
184 浏览

xml - 用于验证 NMTOKENS 属性列表中的每个值的 XML 模式

鉴于此 XML 文件:

...是否可以创建一个 XSD key/keyref样式验证来确保blessed列表中的每个值都与现有的匹配user/@name

如果 XSD 无法做到这一点,RelaxNG 可以吗?

0 投票
1 回答
315 浏览

xml - 允许使用 Relax NG 附加属性

我正在编写一个放松 NG 模式来验证一些 XML 文件。对于大多数元素,都有一些必需的属性,并且此 XML 模式的实例还可以添加任何额外的属性。

例如,这是一个有效的文档:

在我的 Relax NG 模式中,我是这样表达的:

但是,当我尝试使用jing验证我的文档时,它抱怨我的架构无效:

我猜这是因为requiredAttribute1也符合“任何属性”规则。这样做的正确方法是什么?

在此先感谢,拉斐尔

0 投票
2 回答
2007 浏览

python - Python - RelaxNG 对象模型生成器/解析器

假设我有这个 XML:

此 XML 通过 RelaxNG 模式进行验证,该模式位于:http://libvirt.org/git/?p=libvirt.git;a=tree;f=docs/schemas;hb=
HEAD

现在我想从这个模式中生成类(持久源文件),让我能够以面向对象的方式使用这个模型
所以我

  • 不必费心使用 XML 解析器
  • 可以使用这些对象,但它们始终符合 RelaxNG 模式
  • 获取 IDE 自动完成
  • 通过 Python 解释器获得验证

最后我希望能够做这样的事情:

我正在考虑自己编写类似的东西(一个通用的 RelaxNG 对象模型生成器),但我想知道是否有人可以帮助我如何开始以及是否有一些 python 库可以帮助我这样做(lxml?)


方法一:将RelaxNG转换为XSD,然后用generateDS生成对象模型

正如铁托在他的回答中建议的那样,我从这里下载了最新的 trang 。然后我像这样执行 trang: java -jar trang.jar domain.rng domain.xsd. 这已经给了我一些警告:

不幸的是,尝试从生成的 XSD 中生成对象模型失败了:

这些是 trang 生成的 XSD(并产生了该错误):

http://mackaz.de/so/basictypes.xsd
http://mackaz.de/so/domain.xsd
http://mackaz.de/so/domaincommon.xsd http://mackaz.de/so/networkcommon .xsd
http://mackaz.de/so/qemu.xsd
http://mackaz.de/so/storageencryption.xsd

通过一些调试,我发现了 generateDS 错误的来源。在文件 basictypes.xsd 中,似乎有一些错误的表达式(每个元素中有三个双引号):

我用不同的值替换了这些表达式(现在不反映模式,但让 generateDS 高兴):

Et voila - 它有效,generateDS 不再抱怨并生成此输出文件:

http://mackaz.de/so/domain.py

现在我必须调查该文件,看看它是否可以帮助我(正如预期的那样,它非常大:28157 LOC ...)。

0 投票
1 回答
83 浏览

perl - 选择元素的 RelaxNG 调试消息

如何使我的 RNG 文件更详细,以便如果我未能指定所需的选择元素,错误消息将得到更好的描述,而不仅仅是:

有没有办法命名选择标签?

0 投票
2 回答
1817 浏览

javascript - 使用 JavaScript 进行 RelaxNG 或 XSD 模式验证

我想在客户端 JavaScript 中进行 RelaxNG(首选)或 XSD(如果必须)模式验证。有什么好的图书馆吗?谷歌找到了jsrelaxngvalidator,但我无法让它运行,而且它似乎没有维护。目标浏览器仅限 Firefox 和 Chrome。

0 投票
1 回答
122 浏览

validation - 验证 RelaxNG 中的 URI 不为空

我正在尝试验证一个元素在 RelaxNG 中始终具有 href 属性,并假设您可以这样做:

唯一要注意的是,显然anyURI 认为空字符串是有效的,因此以出色的成绩href=""通过。有什么简单的方法可以解决这个问题吗?

0 投票
1 回答
210 浏览

xml - 在 RELAX NG 外部引用中需要一点递归

我们一直在使用 RELAX NG 为我们的基于 Web 的 API 指定和验证 XML 消息,我正在做一些清理工作并开始使用该<external>元素。

在我们的模式中,我们有一个<subscription>元素,它有诸如 id 和句点之类的东西,还有一个<account>. 这在 RELAX NG 中很容易指定:

然后,此模式将包含在特定请求的实际消息模式中。

问题是<account>元素还可以<subscription>根据请求有多个元素(例如,有时我们根据帐户信息搜索订阅数据,有时我们会根据订阅数据搜索帐户信息)。

我试过:

但是在加载架构时出现(并非意外)错误:Detected an externalRef recursion

有没有办法指定某种递归限制 - 某种方式知道我的当前<subscription>是一个孩子,<account>所以不应该有<account>孩子本身?

0 投票
1 回答
90 浏览

validation - 使用 externalRef 引用 RelaxNG 模式中的特定元素

所以我有一个引用另一个的 RelaxNG 模式:

其他.rng:

有什么方法可以只导入<good>但不允许<bad>吗?目标是:

0 投票
2 回答
145 浏览

xml - 如何验证 RelaxNG 语法?

这对谷歌来说很难,因为 RelaxNG 被用来验证其他东西,而且我得到了太多错误的结果。我正在寻找的是一种验证我的 RelaxNG 文件本身没有语法错误的好方法。