【发布时间】:2017-02-20 18:00:35
【问题描述】:
XML
<ns2:Response xmlns:ns2="http://test.com/" Id="122212">
<Infos size="1">
<Info>
<name>test</name>
</Info>
</Infos>
</ns2:Response>
生成的 XSD
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- XML Schema Generated from XML Document on Mon Feb 20 2017 23:20:03 GMT+0530 (India Standard Time) -->
<!-- with XmlGrid.net Free Online Service http://xmlgrid.net -->
<xs:element name="ns2:Response">
<xs:complexType>
<xs:sequence>
<xs:element name="Infos">
<xs:complexType>
<xs:sequence>
<xs:element name="Info">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="size" type="xs:int"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="xmlns:ns2" type="xs:string"></xs:attribute>
<xs:attribute name="Id" type="xs:int"></xs:attribute>
</xs:complexType>
</xs:element>
错误
SAX 异常:s4s-att-invalid-value:属性值无效 元素“元素”中的“名称”。记录原因: cvc-datatype-valid.1.2.1:“ns2:响应”不是有效值 'NCName'。
【问题讨论】:
-
架构说它是由 XmlGrid.net 生成的。从来没有听说过那个工具,但如果它生成这个模式,它显然是垃圾。
<xs:attribute name="xmlns:ns2"是可笑的错误。寻找更好的工具。 -
@MichaelKay:
<xs:element name="ns2:Response">也好不到哪里去。而且,是的,XMLGrid.net 确实从 OP 的 XML 生成了这样的 XSD——我刚刚检查过;这不仅仅是一代后编辑不佳的情况。呃。 -
您需要将第二个 XSD 导入主 XSD,以便在命名空间中有一个根元素,而在没有命名空间的子元素中。具体方法请参见my updated answer。
标签: java xml xsd xsd-validation