1

我正在尝试XmlDocument针对仅代表该片段的 XSD 验证一个片段。例如:

<!-- Validate entire message against message.xsd -->
<?xml version="1.0" encoding="utf-8" ?>
<Message>
    <Header>
        ...
    </Header>
    <Body>
        <!-- Validate this against body.xsd -->
        ...
    </Body>
</Message>

整个消息根据开发人员提供的message.xsd模式进行验证。元素的内容根据<Body>客户端提供的body.xsd模式进行验证。

body.xsd架构对、或元素一无所知。它只定义元素中应该包含的内容。<Message><Header><Body><Body>

我不知道如何根据 XML 模式片段验证 XML 片段。一切似乎都表明 XML 模式片段需要了解其祖先元素的所有信息。我有几条路径,但不知道如何实现它们。

  1. 以编程方式将body.xsd注入到message.xsd的适当节点中。
  2. 从中提取适当XmlElement的并基于此节点XmlDocument创建一个新的。XmlDocument
  3. 与名称空间有关,我还不明白。

这个问题有哪些解决方案?

4

1 回答 1

0

我对用于模式验证的本机 .NET API 了解不多,但通常会发现验证 API 不够灵活,无法验证根以外的元素。一种方法是使用模式感知 XQuery 处理器(例如 Saxon-EE)调用验证,使用查询

import schema ... at "body.xsd";
validate strict {/Message/Header/Body}
于 2012-06-25T08:11:12.657 回答