Joh*_*n K 5 .net c# xsd xml-validation
从我与XML和Schema验证的逗留,似乎当为XMLReader实例启用了片段级一致性时,XML源将停止针对任何包含的Schema进行验证.
但是,我无法从MSDN文档中验证这一点,因为它似乎没有根据一致性级别描述XSD架构行为.此外,如果我认为这个问题是真的,我找不到它的解决方法.
我想知道如何针对XSD架构验证XML 片段.
在我的情况下,我正在验证XHTML 1 Strict Schema.由于像<center>这样弃用的HTML标签没有被标记为无效,这也是我认为片段一致性忽略模式的部分原因.此外,当我在同一场景中使用文档级一致性时,成功标记了有效性错误.
我想我在这篇名为“HOW TO: Validate XML Fragments Against an XML Schema in Visual C#.NET”的MSKB 文章中奇怪地找到了答案, 该文章的底部指出:
注意:仅针对 XML 模式验证 XML 模式中的类型声明和顶级元素。子元素被视为本地元素,因此无法验证。为了验证子元素,请声明一个顶级元素并引用它。
我认为该段落有一个错误,其意图是陈述top-level elements in the XMLschemadocument/fragment are validated against an XML Schema
由于 Microsoft 代码示例从顶层开始其片段(而不是在文档中任意开始),因此它可以进行验证。然而,就我而言,我采用的是中间文档结构。
如果我的解释有误,请纠正我。
解决方法是我将片段填充到顶级元素中以进行验证。
换句话说,如果我正在处理 XHTML 片段:
<div>MY FRAGMENT</div>
Run Code Online (Sandbox Code Playgroud)
我可以将其包装起来进行验证,以符合 XHTML 严格架构:
<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>
Run Code Online (Sandbox Code Playgroud)
这个解决方案对我有用,所以我会暂时使用它;我还不确定是否存在更好的解决方案。
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |