【发布时间】:2014-08-20 07:16:59
【问题描述】:
我有一个需要为其生成 XSD 的 XML。我的 XML 如下:
实例:
<mes:GetInboundResponseGetInboundSMS
xmlns:mes="http://abcd.com">
<response>
<messages>
<item>
<date>15/04/2014 00:00:00</date>
</item>
<item>
<date>01/07/2014 10:01:32</date>
</item>
</messages>
</response>
</mes:GetInboundResponseGetInboundSMS>
请注意,只有最外层的元素 GetInboundResponseGetInboundSMS 属于命名空间 http://abcd.com - 其余元素不属于。如何在 XSD 中指定它?
我已尝试使用以下 XSD,但这给了我错误:
XSD:
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="GetInboundResponseGetInboundSMS">
<xs:complexType>
<xs:sequence>
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:element name="messages">
<xs:complexType>
<xs:sequence>
<xs:element name="item"
maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但是当我尝试使用在线验证器通过 XSD 验证实例时,我遇到了这个错误:
无效。
错误 - 第 1、95 行:org.xml.sax.SAXParseException;行号:1;列号:95; cvc-elt.1:找不到元素“mes:GetInboundResponseGetInboundSMS”的声明。
这是合乎逻辑的,因为我没有在 XSD 中提供命名空间。请帮助我了解如何仅为我的 XSD 中的最外层元素提供此命名空间。
【问题讨论】:
标签: xml xsd xsd-validation