我想我在这篇题为HOW TO: Validate XML Fragments against an XML Schema in Visual C#.NET的MSKB 文章中找到了答案。文章 底部指出:
注意:只有 XML 模式中的类型声明和顶级元素会根据 XML 模式进行验证。子元素被视为本地元素,因此无法验证。为了验证子元素,声明一个顶级元素并引用它。
我认为那段有错误,目的是说明top-level elements in the XML
schema
document/fragment
are validated against an XML Schema
因为 Microsoft 代码示例从顶层开始其片段(而不是任意在文档中),所以它与验证一起工作。但是在我的情况下,我正在使用中间文档构造。
如果我的解释有误,请纠正我。
解决方法/解决方案
一种解决方法是让我将我的片段填充到顶级元素中以进行验证。
换句话说,如果我正在处理 XHTML 片段:
<div>MY FRAGMENT</div>
我可以将其包装以进行验证以符合 XHTML Strict Schema,如下所示:
<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>
该解决方案对我有用,因此我将在此期间使用它;是否存在更好的解决方案我还不确定。