我正在尝试针对仅代表该片段的XSD验证XmlDocument
的片段。例如:
<!-- 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模式片段需要知道它的祖先元素。我有几条路,但我不确定如何实现它们。
XmlElement
中提取相应的XmlDocument
,然后根据此节点创建新的XmlDocument
。此问题有哪些解决方案?
答案 0 :(得分:0)
我不太了解用于架构验证的本机.NET API,但是很常见的是发现验证API不够灵活,无法验证除root之外的元素。一种方法是使用模式感知XQuery处理器(例如Saxon-EE)使用查询调用验证
import schema ... at "body.xsd";
validate strict {/Message/Header/Body}