Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 启用片段级一致性时是否忽略XML架构验证?_C#_.net_Xsd_Xml Validation - Fatal编程技术网

C# 启用片段级一致性时是否忽略XML架构验证?

C# 启用片段级一致性时是否忽略XML架构验证?,c#,.net,xsd,xml-validation,C#,.net,Xsd,Xml Validation,从我在XML和模式验证方面的经历来看,当为实例启用时,XML源将停止针对任何实例进行验证 但是,我无法从MSDN文档中验证这一点,因为它似乎没有根据一致性级别描述XSD模式行为。如果我假设这个问题是真的,我也找不到解决方法 我想知道如何根据XSD模式验证XML片段。 在我的情况下,我是在反对这一观点。由于不推荐使用的HTML标记(如)没有被标记为无效,这就是我认为片段一致性忽略模式的部分原因。同样,当我在同一场景中使用文档级一致性时,有效性错误也会被成功标记 .我想我在《如何:根据Visual

从我在XML和模式验证方面的经历来看,当为实例启用时,XML源将停止针对任何实例进行验证

但是,我无法从MSDN文档中验证这一点,因为它似乎没有根据一致性级别描述XSD模式行为。如果我假设这个问题是真的,我也找不到解决方法

我想知道如何根据XSD模式验证XML片段。

在我的情况下,我是在反对这一观点。由于不推荐使用的HTML标记(如)没有被标记为无效,这就是我认为片段一致性忽略模式的部分原因。同样,当我在同一场景中使用文档级一致性时,有效性错误也会被成功标记


.

我想我在《如何:根据Visual C#.NET中的XML模式验证XML片段》一书中找到了答案,这篇文章的底部写道:

注意:只有类型声明和 XML中的顶级元素 根据XML验证模式 模式。子元素被视为 本地的,因此不能 验证。为了验证 子元素,声明一个顶级 元素,并参考该元素

我认为该段中有一个错误,其目的是说明XML模式中的顶级元素是根据XML模式验证的

由于Microsoft代码示例在顶层(而不是在文档中任意)开始其片段,因此它可以进行验证。然而,在我的例子中,我采用了中间文档构造

如果我的解释错了,请纠正我


解决方法/解决方案 一种解决方法是,为了验证,我将片段塞进顶级元素中

换句话说,如果我处理的是XHTML片段:

<div>MY FRAGMENT</div>
我的片段
我可以将其包装为以下格式进行验证:


包含HTML片段,符合XHTML 1.0严格模板。
我的碎片
这个解决方案适合我,所以我将在过渡期间使用它;我还不确定是否有更好的解决方案

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML fragment enclosed, conforming to XHTML 1.0 Strict Template.</title>
</head>
<body>

    <div>MY FRAGMENT</div>

</body>
</html>