cvc-complex-type.2.4.a: 具有子元素和属性的复杂类型
cvc-complex-type.2.4.a: complex type with child-element and attributes
我尝试为我的 xml 文件定义一些 xsd 方案。
xml 结构类似于
<?xml version="1.0" encoding="UTF-8"?>
<product name="abc" xmlns="http://example.org/productMetadata.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://example.org/productMetadata.xsd productMetadata.xsd">
<metainf />
</product>
(具有一些已定义属性 "name" 和示例中的一些嵌套标签的根标签 "metainf")
我定义 xsd 的方法看起来像
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.org/productMetadata.xsd" xmlns="http://example.org/productMetadata.xsd">
<xsd:element name="product">
<xsd:complexType>
<xsd:all>
<xsd:element type="xsd:string" name="metainf" />
</xsd:all>
<xsd:attribute type="xsd:string" name="name" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
不过,我无法根据 xsd 验证 xml。
根据验证器(我使用 java、网络应用程序和 eclipse),我收到以下失败消息。
Invalid content was found starting with element 'metainf'. One of '{metainf}' is expected.
或
Cvc-complex-type.2.4.a: Invalid Content Was Found Starting With Element 'metainf'. One Of '{metainf}' Is Expected., Line '5', Column '13'.
任何人都可以提示,我的 xsd 或 xml 有什么问题。
只需在 xsd:schema
声明中添加 elementFormDefault="qualified"
,如下所示:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://example.org/productMetadata.xsd" xmlns="http://example.org/productMetadata.xsd">
根据 elementFormDefault
属性的文档:
The form for elements declared in the target namespace of this schema. The value must be "qualified" or "unqualified". Default is "unqualified".
- "unqualified" indicates that elements from the target namespace are not required to be qualified with the namespace prefix.
- "qualified" indicates that elements from the target namespace must be qualified with the namespace prefix.
我尝试为我的 xml 文件定义一些 xsd 方案。
xml 结构类似于
<?xml version="1.0" encoding="UTF-8"?>
<product name="abc" xmlns="http://example.org/productMetadata.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://example.org/productMetadata.xsd productMetadata.xsd">
<metainf />
</product>
(具有一些已定义属性 "name" 和示例中的一些嵌套标签的根标签 "metainf")
我定义 xsd 的方法看起来像
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.org/productMetadata.xsd" xmlns="http://example.org/productMetadata.xsd">
<xsd:element name="product">
<xsd:complexType>
<xsd:all>
<xsd:element type="xsd:string" name="metainf" />
</xsd:all>
<xsd:attribute type="xsd:string" name="name" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
不过,我无法根据 xsd 验证 xml。
根据验证器(我使用 java、网络应用程序和 eclipse),我收到以下失败消息。
Invalid content was found starting with element 'metainf'. One of '{metainf}' is expected.
或
Cvc-complex-type.2.4.a: Invalid Content Was Found Starting With Element 'metainf'. One Of '{metainf}' Is Expected., Line '5', Column '13'.
任何人都可以提示,我的 xsd 或 xml 有什么问题。
只需在 xsd:schema
声明中添加 elementFormDefault="qualified"
,如下所示:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://example.org/productMetadata.xsd" xmlns="http://example.org/productMetadata.xsd">
根据 elementFormDefault
属性的文档:
The form for elements declared in the target namespace of this schema. The value must be "qualified" or "unqualified". Default is "unqualified".
- "unqualified" indicates that elements from the target namespace are not required to be qualified with the namespace prefix.
- "qualified" indicates that elements from the target namespace must be qualified with the namespace prefix.