gpt4 book ai didi

c# - 启用片段级一致性时忽略 XML 模式验证?

转载 作者:太空狗 更新时间:2023-10-29 23:42:09 28 4
gpt4 key购买 nike

从我对 XML 和 Schema 验证的了解来看,似乎当 fragment-level conformanceXMLReader 启用例如,XML 源停止针对任何 included Schemas 进行验证.

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

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

在我的例子中,我正在验证 XHTML 1 Strict Schema .事实上,像

这样的弃用 HTML 标签没有被标记为无效,这是我相信片段一致性忽略模式的部分原因。此外,当我在同一场景中使用文档级一致性时,会成功标记有效性错误。

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com