启用片段级一致性时,是否忽略XML Schema验证?

时间:2010-09-03 02:50:35

标签: c# .net xsd xml-validation

在我使用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

1 个答案:

答案 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>

这个解决方案适合我,所以我会在临时使用它;是否存在更好的解决方案我还不确定。