我正在尝试创建一个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是什么?
答案 0 :(得分:3)
在之前的情况下,我必须机械地处理设计糟糕的XML,无论是用于模式验证还是绑定到类模型,我发现使用XSL转换预处理XML通常是一个好的开始。在许多情况下,这种预处理可以将糟糕的设计XML变为更好的东西。
在您的情况下,您可以编写转换
的转换<item1 name="abc"/>
到
<item num="1" name="abc"/>
然后,为此设计架构要容易得多。如果给定的XML输入不符合该模式,那么XSLT应该不管它,然后它将失败验证。
答案 1 :(得分:0)
愚蠢的问题:你尝试过type =“xs:string”而不是type =“item”吗?我想你可以使用this获得灵感。