根据模式验证XML元素

时间:2011-07-21 18:48:32

标签: c# .net xml xsd

我需要根据模式验证xml文件的一小段片段。本质上,我想问一个问题“XML文档Y中的元素X是否符合模式Z中定义的类型?”如果没有得到描述原因的消息。这也必须考虑到对这些类型的限制(例如maxLength,minInclusive)。

这可能吗?

3 个答案:

答案 0 :(得分:3)

我不知道从C#做到这一点,但它很容易在XQuery或XSLT 2.0中完成。在XSLT 2.0中,它是:

<xsl:copy-of select="doc('doc.xml')//selected/element" validation="strict"/>

在XQuery中它是

validate strict {doc('doc.xml')//selected/element}

您只需要一个可在您选择的环境中运行的架构感知XQuery或XSLT 2.0处理器。

答案 1 :(得分:1)

事实证明这比我预期的要容易得多。解决方案是创建一个新的模式,其中包含我想要验证的一个元素作为其根。将此架构添加到架构集后,您可以像处理任何完整文档一样简单地验证片段。

答案 2 :(得分:0)

一篇精确描述验证Xml片段的微软知识文章。这可能很有用。  http://support.microsoft.com/kb/318504