在我使用XML和Schema验证时,似乎在为fragment-level conformance实例启用XMLReader时,XML源将停止针对任何included Schemas进行验证。
但是我无法从MSDN文档中验证这一点,因为它似乎没有根据一致性级别描述XSD架构行为。此外,如果我认为这个问题是真的,我找不到它的解决方法。
我想知道如何针对XSD架构验证XML 片段。
在我的情况下,我正在验证XHTML 1 Strict Schema。通过弃用的HTML标签,例如< center>没有被标记为无效,这是我认为片段一致性忽略模式的部分原因。此外,当我在同一场景中使用文档级一致性时,成功标记了有效性错误。
For a code sample of the type of validation scenario I'm using see this
答案 0 :(得分:2)
我认为我在this MSKB article中找到了一个奇怪的答案,名为如何:在Visual C#.NET中针对XML模式验证XML片段文章的底部说明:
注意:只有类型声明和 XML中的顶级元素 模式根据XML进行验证 架构。子弹被认为是 本地因此不可能 验证。为了验证一个 子元素,声明一个顶级 元素并参考。
我认为该段落中存在错误,目的是陈述top-level elements in the XML
schema
document/fragment
{{1 }}
因为Microsoft代码示例在顶层开始其片段(而不是在文档中任意地),所以它可以用于验证。但是在我的情况下,我正在采用中间文档构造。
如果我的解释错误,请纠正我。
解决方法是让我将我的片段填充到顶级元素中以进行验证。
换句话说,如果我正在处理XHTML片段:
are validated against an XML Schema
我可以将其包装以验证conform to the XHTML Strict Schema为:
<div>MY FRAGMENT</div>
这个解决方案适合我,所以我会在临时使用它;是否存在更好的解决方案我还不确定。