c - 使用 XSD 文件仅验证 XML 文件的一部分

标签 c xml xsd

有没有办法使用 XSD 文件仅验证 XML 文件的一部分,并忽略 XML 文件的其他内容。我只想使用 XSD 文件验证 XML 文件中的几个标签。我的 XML 文件包含许多标签,但 xsd 仅包含少数标签的元素。

有可能以某种方式实现这一点吗?

最佳答案

原则上(至少)有两种方法可以实现这一目标。

首先,原则上您可以告诉验证器您要验证文档中的哪些元素; XSD 规范不需要从文档根目录开始进行验证。实际上,命令行验证器几乎从不提供运行时选项来在除根之外的任何地方启动验证。我认为验证库更有可能提供该功能;它们经常(或至少有时)提供函数,允许您传入应开始验证的元素以及必要的架构信息。

如果您的验证器不允许您有选择地进行验证,您可以编写一个模式,其中仅包含您想要验证的那些元素和属性的声明,并在“宽松验证模式”下调用文档根上的验证器 --这意味着,本质上是“如果您在模式中找到文档中某个元素的声明,则根据其声明验证该元素,否则接受它(假设它与其父级声明中的松散通配符匹配)并继续。”因此,验证器将忽略您未提供声明的元素,并验证您为其提供声明的元素。 (请注意,符合标准的 XSD 处理器不需要提供宽松验证模式,并且规范中宽松验证的定义有点不明确,但我相信大多数可用的处理器确实支持它并在宽松模式下执行相同的操作。)/p>

关于c - 使用 XSD 文件仅验证 XML 文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600680/

相关文章:

c - 以度为单位旋转位图的函数工作得非常快,但会重新定位输出图像

css - 在 mxGraph 中添加一个滚动球

xml - XML 中的严格和过渡模式定义 (XSD) 之间有什么区别

python - 显示共享库的所有 native 路径

java - 使用 intelliJ 从 xsd 生成 java 类

Java JAXB 解码器链接异常

c - 使用输入验证需要在c中输入错误的输入数量

c++ - C/C++ 中的 dlopen 和全局变量

c - 从 C 中的长字符串数组中高效搜索最短和最长的字符串

xml - Clojure 数据 zip xml 组合