2010-04-09 110 views
0

我正在寻找创建一个XSD文档来为我验证一些XML。比方说,例如,XML文档是用来描述书:关于使用XSD进行XML验证的问题

<?xml version="1.0" encoding="UTF-8"?> 
<book> 
    <comment>Bob's very first book</comment> 
    <name>Bob's book</name> 
    <author>Bob</author> 
    <year>2009</year> 
    <publisher> 
     <name>Dan's book publishing enterprise</name> 
     <address>123 Fake St.</address> 
    </publisher> 
</book> 

我们也可以说,我只真正关心的三大要素 - 名称,作者和年份。它们是强制性的,应该根据模式进行验证。我不控制我收到的XML文件,所以元素的顺序应该不重要,并且任何其他元素都将被允许通过XSD验证未经检查。

遵循这些要求,我试图构建一个能够做这种验证的XSD模式,但我无法把它做好。可以按任何顺序定义元素的约束规则排除了sequence指示符。剩下的是allchoice指标。 all将是明显的选择,但它不允许我使用any元素。

我也玩弄使用这种的想法:

<include schemaLocation="year.xsd"/> 
<include schemaLocation="name.xsd"/> 
<include schemaLocation="author.xsd"/> 
.... 
    <sequence> 
     <any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
    </sequence> 

而如果XML文件中找到,名称一年,笔者将被验证,这不检查强制性内容 - 我不能指定的年,作者和该书的名称都需要通过验证。

任何人都可以给我提示如何构建一个XSD文档,它将验证一些无序的强制性元素,并仍然允许XML文件中的未定义元素通过验证?

谢谢!

回答

1

我确信你不能用XML Schema来做到这一点。意见建议:

  • 准备你的文件用XSLT验证。
  • 使用Schematron
+0

看起来你是对的...... – Sevas 2010-04-15 14:20:52