验证XML,其中元素名称包含序列号

时间:2012-05-11 09:08:44

标签: xml xsd xsd-validation

我正在尝试创建一个XSD来验证我们从客户那里收到的XML。 XML看起来像这样:

<someElement>
   <items>
      <item1 name=”abc” />
      <item2 name =”def” />
      <item3 name =”ghi” />
   </items>
</someElement>

请注意,无论出于何种原因,项目名称也包含数字。未指定项目数,因文件而异。

由于元素名称中的行号不适用:

<xs:sequence>
   <xs:element name="items" type="item" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>

验证这一点的XSD是什么?

2 个答案:

答案 0 :(得分:3)

在之前的情况下,我必须机械地处理设计糟糕的XML,无论是用于模式验证还是绑定到类模型,我发现使用XSL转换预处理XML通常是一个好的开始。在许多情况下,这种预处理可以将糟糕的设计XML变为更好的东西。

在您的情况下,您可以编写转换

的转换
<item1 name="abc"/>

<item num="1" name="abc"/>

然后,为此设计架构要容易得多。如果给定的XML输入不符合该模式,那么XSLT应该不管它,然后它将失败验证。

答案 1 :(得分:0)

愚蠢的问题:你尝试过type =“xs:string”而不是type =“item”吗?我想你可以使用this获得灵感。