我需要从此XSD创建XML:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="group">
<xs:complexType>
<xs:sequence>
<xs:element name="person" minOccurs="5" maxOccurs="20" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
以下是我尝试过的XML:
<?xml version="1.0" ?>
<group name="abcd">
xmlns="www.example.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="ex1.xsd">
<person>Joao</person>
<person>Andre</person>
<person>Filipe</person>
<person>Joaquim</person>
<person>Rui</person>
</group>
我收到此错误:
无效。 错误 - 第10行,第9行:org.xml.sax.SAXParseException; lineNumber:10; columnNumber:9; cvc-complex-type.2.3:元素'group'不能有字符[children],因为类型的内容类型只是元素。
答案 0 :(得分:1)
问题数量:
group
标签。这是您立即出错的直接原因。它导致
解析器将您想要的属性误解为文本
内容到group
元素。schemaLocation
必须使用namespace-XSD 对。elementFormDefault="qualified"
总之,以下XSD将成功验证以下XML。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org"
elementFormDefault="qualified">
<xs:element name="group">
<xs:complexType>
<xs:sequence>
<xs:element name="person" minOccurs="5" maxOccurs="20" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" ?>
<group name="abcd"
xmlns="http://www.example.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org ex1.xsd">
<person>Joao</person>
<person>Andre</person>
<person>Filipe</person>
<person>Joaquim</person>
<person>Rui</person>
</group>
答案 1 :(得分:0)
更改&#39;组&#39; XSD中的定义包括mixed =&#34; true&#34;
<xs:element name="group">
<xs:complexType mixed="true">
答案 2 :(得分:0)
当我从Skype复制一个插入了奇怪编码的代码时遇到了这个错误。解决方案是删除粘贴的代码,然后手工重写所有错误的编码部分,而没有任何粘贴的编码字符。