从我对 XML 和 Schema 验证的了解来看,似乎当 fragment-level conformance为 XMLReader 启用例如,XML 源停止针对任何 included Schemas 进行验证.
但是我无法从 MSDN 文档中验证这一点,因为它似乎没有根据一致性级别描述 XSD 架构行为。另外,如果我认为这个问题是真的,我找不到解决方法。
我想知道如何根据 XSD 模式验证 XML 片段。
在我的例子中,我正在验证 XHTML 1 Strict Schema .事实上,像
For a code sample of the type of validation scenario I'm using see this .
最佳答案
我想我在 this MSKB article 中找到了答案标题很奇怪HOW TO: Validate XML Fragments Against an XML Schema in Visual C#.NET文章底部指出:
NOTE: Only the type declarations and the top-level elements in the XML schema are validated against an XML schema. Subelements are considered as local and therefore cannot be validated. In order to validate a subelement, declare a top-level element and refer to that.
我认为该段中存在错误,其目的是声明 XML 中的顶级元素
schema
文档/片段
针对 XML 架构进行验证
因为 Microsoft 代码示例在顶层开始其片段(而不是任意地在文档内),所以它与验证一起使用。但是,就我而言,我采用的是中间文档结构。
如果我的解释有误,请纠正我。
解决方法/解决方案
我的解决方法是将我的片段填充到顶级元素中以进行验证。
换句话说,如果我正在处理 XHTML 片段:
<div>MY FRAGMENT</div>
我可以将其打包以验证到 conform to the 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>
这个解决方案对我有用,所以我会在过渡期间使用它;我不确定是否存在更好的解决方案。
关于c# - 启用片段级一致性时忽略 XML 模式验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632767/