XML 元素和 XSD 包含属性和文本的验证
XML element and XSD validation that contains both attribute and text
我正在努力弄清楚如何构建我的 XSD 验证,以便它正确地验证我的 XML 文件。
我的元素 languages
包含元素 language
,其中包含文本和 id
字段。
我的验证器告诉我我有:Validation Error: The element 'languages' has invalid child element 'language'.
如何正确构建它?我的 language
元素还需要 complexType
吗?
XSD
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="dataset">
<xsd:complexType>
<xsd:all>
<xsd:element name="languages">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="language">
<xsd:complexType mixed="true">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="id" type="xsd:integer"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<dataset>
<languages>
<language id="0">C</language>
<language id="1">C++</language>
</languages>
</dataset>
以下 XSD 将验证您的 XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="dataset">
<xs:complexType>
<xs:sequence>
<xs:element name="languages">
<xs:complexType>
<xs:sequence>
<xs:element name="language" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id">
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
备注:
- 错误消息与基数 (
maxOccurs="unbounded"
) 有关。
- 你可能不想要
mixed="true"
除非 language
可能在其内容中混合了文本标记。
我正在努力弄清楚如何构建我的 XSD 验证,以便它正确地验证我的 XML 文件。
我的元素 languages
包含元素 language
,其中包含文本和 id
字段。
我的验证器告诉我我有:Validation Error: The element 'languages' has invalid child element 'language'.
如何正确构建它?我的 language
元素还需要 complexType
吗?
XSD
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="dataset">
<xsd:complexType>
<xsd:all>
<xsd:element name="languages">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="language">
<xsd:complexType mixed="true">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="id" type="xsd:integer"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<dataset>
<languages>
<language id="0">C</language>
<language id="1">C++</language>
</languages>
</dataset>
以下 XSD 将验证您的 XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="dataset">
<xs:complexType>
<xs:sequence>
<xs:element name="languages">
<xs:complexType>
<xs:sequence>
<xs:element name="language" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id">
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
备注:
- 错误消息与基数 (
maxOccurs="unbounded"
) 有关。 - 你可能不想要
mixed="true"
除非language
可能在其内容中混合了文本标记。