我有一个项目,我正在使用RelaxNG(jing)来验证xml.我喜欢RelaxNG的语法,但是我使用XML模式的大多数工具(实际上,我认为除了jing之外我没有一个工具可以使用).当大多数支持似乎都围绕XML模式时,我是否通过使用RelaxNG来设计和未来支持错误?我应该坚持使用RelaxNG并让其他人学习它(必要时踢和尖叫,j/k)?我应该因工具支持而切换到xml架构吗?
谢谢.
您可以针对性能和准确性推荐哪些XML验证工具,每个工具都是我们系统的关键问题?我们有以下要求:
为什么不用xmllint?(这是背景,你可以跳过它,如果你愿意)
我们有一个大型的Perl系统,它使用RelaxNG来验证我们的XML.我们使用紧凑的RelaxNG格式和trang将其转换为标准的RelaxNG格式.然后我们通过xmllint进行实际验证.
这就是问题出现的时候.xmllint经常会错误地报告验证错误.它不会给出误报或否定,但如果文档无法验证,xmllint通常会报告给定错误的错误元素或属性.有时错误是正确的("不希望看到元素'bar'),但仅仅是因为没有报告先前的错误(因为'bar'应该遵循必需但缺少的元素'foo',但xmllint不会'请告诉我们这一点.请注意,这是xmllint长期存在的问题,即使是最新版本也存在同样的问题.我们经常会收到大量的XML文档,错误地报告错误会给客户和开发人员带来很大的麻烦.
我想使用RELAX NG schemata验证XML文档,我想使用JAXP验证API.
从谷歌搜索,似乎我可以使用Jing和ISO RELAX JARV到JAXP Bridge.不幸的是,在将两者都添加到我的类路径后,我无法让它工作.SchemaFactory
它只是IllegalArgumentException
在尝试实例化工厂时抛出一个- 我向内看SchemaFactory
,显然SchemaFactoryFinder
是返回null结果.
所以我很欣赏这两个问题的答案:
我需要这个来使用Java 5和Java 6.
谢谢!
我读到了关于Relaxer的事情,它将.RNG编译成Java类.BBut网站http://www.relaxer.org/已经死了.
Q1:
Relaxer活着吗?这是真的吗,有效吗?从.RNG生成Java类是否合理?
Q2:
是否有适用于.NET的Relaxer?是否有一个工具可以从RelaxNG模式生成C#类?
问题3: Javascript是否有松弛剂?
而且,最后
Q4:
RelaxNG活着吗?它可行吗?在REST/JSON世界中相关且有用吗?人们还在使用它还是会褪色,这个好主意已经被淘汰了?我知道这是主观的,但我想知道你的评估.我在stackoverflow上看到只有9或10个RelaxNG Q,所以我质疑这项技术的相关性.如果不是RelaxNG,那又怎样?WADL? 什么都没有?
有关相关问题,请参阅维护JavaScript和C#对象模型之间的一致性.
GNU Emacs用于编辑XML文档的主要模式.它支持编辑格式良好的XML文档,还使用RELAX NG Compact语法提供对XML文档的模式敏感编辑.
有没有一种模式可以为W3C XML Schema做同样的事情?
如果我找不到这样的东西,那么无论如何nxml-mode对我有用,假设我严格处理W3C XML Schema而不是Relax-NG?
相关:VIM中的模式感知编辑
如何通过Python中的紧凑RELAX NG模式验证XML文档?
该REXML
模块似乎支持RELAX NG验证,但文档没有关于使用框架验证部分的任何真实信息.
您将如何使用RELAX NG模式验证XML文档?代码段最有帮助.TIA!
我正在尝试在跨平台应用程序中使用C#和XML(大多数开发都在Linux上的MonoDevelop中,但大多数用户最终将使用我在Visual Studio中创建的WinForms前端).Mono表现得像我期望的那样,但.Net不是,所以我正在寻找选择和替代方案.
模式具有各种可选元素,后跟"xs:any"元素.这在Mono中完全正常,但在微软的.Net中却没有,因为它抱怨可选元素的出现在它在模式中的实际定义和"xs:any"之间是模糊的.从一点阅读开始,它似乎是在W3C的Schema定义的更高版本中解决的问题.显然,Mono一直保持最新状态,但微软却落后了.
我能看到的选项是:
1)使用RelaxNG - 遗憾的是,从主站点到C#实现的链接被破坏了.它是Mono的一部分,但在MS'.Net上运行时没有多大帮助.我能看到的唯一方法是复制和重建Mono的版本作为我自己的DLL
2)使用Schematron - 我发现它是关于制作向后和向前兼容XML的建议,但它看起来更像是格式验证器而不是"标准"模式语言.我不太确定实现的位置 - 我能找到的只是一个命令行验证器.
3)确保MS .Net实现使用Mono使用的更新架构标准 - 我甚至不知道这是否可行.
4)坚持使用丑陋的模式,并将"xs:any"放在可选的"扩展"元素中 - 除了官方的.Net框架之外没有任何其他理由它不会混淆,但它可以工作.
该代码针对.Net 2.0,但我的机器上安装了3.5.我也在使用Mono 2.4,MonoDevelop 2.2和Visual Studio Express 2005.
是1-3中的任何一种,还是我坚持4?
谢谢.
使用RelaxNG,我可以检查属性的值是否在封闭元素中是唯一的?
例如,这castle
应验证:
<castle>
<room>
<door to="North" />
<door to="South" />
</room>
<room>
<door to="North" />
</room>
</castle>
Run Code Online (Sandbox Code Playgroud)
但这不应该(重复相同的门room
):
<castle>
<room>
<door to="Dungeon" />
<door to="Dungeon" />
</room>
</castle>
Run Code Online (Sandbox Code Playgroud)
我正在使用RelaxNG(紧凑型).我不知道属性值'提前',只是它们在a中应该是唯一的room
.
谢谢!