我正在尝试借助XSD验证XML。
以下是我的XML示例:
<Cells
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation= "ImportCellsXSD.xsd">
<Cell spread="2" row="128" column="51">p</Cell>
<Cell spread="0" row="10" column="1">ea</Cell>
<Cell spread="0" row="8" column="2">d</Cell>
</Cells>
这是我的XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Cells">
<xs:complexType>
<xs:sequence>
<xs:element name="Cell" type="TCell" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="TCell">
<xs:sequence>
<xs:element name="Cell" type="TCellValidation" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="spread" type="TSpread" use="required"/>
<xs:attribute name="row" type="TRow" use="required"/>
<xs:attribute name="column" type="TColumn" use="required"/>
</xs:complexType>
<xs:simpleType name="TCellValidation">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9]+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
TSpread
,TColumn
和TRow
只是对minInclusive
和maxInclusive
当我尝试验证xml时,我发现此错误尝试读取“p”,“ea”和“d”
cvc-complex-type.2.3:元素'Cell'不能有字符[children], 因为类型的内容类型是仅元素。 [6] cvc-complex-type.2.4.b:元素'Cell'的内容不完整。 预计会有一个'{Cell}'。 [6]
如何定义cell
的内容? (p,ea和d)
答案 0 :(得分:1)
您的XSD要求Cell
个元素位于Cell
个元素内 - 可能不是您想要的,绝对不是您的XML所具有的。
这是您修复的XSD以消除上述问题并验证您的XML:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Cells">
<xs:complexType>
<xs:sequence>
<xs:element name="Cell" type="TCell" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="TCell">
<xs:simpleContent>
<xs:extension base="TCellValidation">
<xs:attribute name="spread" type="xs:string" use="required"/>
<xs:attribute name="row" type="xs:string" use="required"/>
<xs:attribute name="column" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="TCellValidation">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9]+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
(TSpread
,TColumn
和TRow
未在您发布的XSD中定义,因此我将其标记为xs:string
,但原则保持不变。)< / p>