从元素'element'开始找到无效的内容。目前没有子元素
问题描述:
我正在处理我的xml技能,但验证器错误我的XSD在某些深层根源的位置。 相应的错误是:从元素'element'开始找到无效的内容。目前没有子元素
- 18:11 CVC-复type.2.4.d:无效含量被发现开始 与元件 'aktor'。预计在这一点上不会有子元素。
- 37:11 cvc-complex-type.2.4.d:发现无效的内容,从元素'utwor'开始
。预计在这一点上不会有子元素。
这里的XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="filmy">
<xs:complexType>
<xs:sequence>
<xs:element name="film">
<xs:complexType>
<xs:sequence>
<xs:element name="tytul"/>
<xs:element name="gatunek"/>
<xs:element name="czasTrwania"/>
<xs:element name="premiera"/>
<xs:element name="produkcja"/>
<xs:element name="rezyser"/>
<xs:element name="scenariusz"/>
<xs:element name="obsada">
<xs:complexType>
<xs:sequence>
<xs:element name="aktor">
<xs:complexType>
<xs:sequence>
<xs:element name="imie"/>
<xs:element name="nazwisko"/>
<xs:element name="dataUrodzenia"/>
<xs:element name="postac"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="soundtrack">
<xs:complexType>
<xs:sequence>
<xs:element name="utwor">
<xs:complexType>
<xs:sequence>
<xs:element name="wykonawca"/>
<xs:element name="tytulUtworu"/>
<xs:element name="gatunekMuzyczny"/>
</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>
这里的XML:
<?xml version="1.0" encoding="utf-8"?>
<filmy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<film>
<tytul>Fight Club</tytul>
<gatunek>Thriller, Psychologiczny</gatunek>
<czasTrwania>2h11m</czasTrwania>
<premiera>11 luty 1999</premiera>
<produkcja>Niemcy, USA</produkcja>
<rezyser>David Fincher</rezyser>
<scenariusz>Jim Uhls</scenariusz>
<obsada>
<aktor>
<imie>Edward</imie>
<nazwisko>Norton</nazwisko>
<dataUrodzenia>1969</dataUrodzenia>
<postac>Narrator</postac>
</aktor>
<aktor>
<imie>Brad</imie>
<nazwisko>Pitt</nazwisko>
<dataUrodzenia>1963</dataUrodzenia>
<postac>Tyler Durden</postac>
</aktor>
<aktor>
<imie>Helena</imie>
<nazwisko>Boham Carter</nazwisko>
<dataUrodzenia>1966</dataUrodzenia>
<postac>Marla Singer</postac>
</aktor>
</obsada>
<soundtrack>
<utwor>
<wykonawca>The Pixies</wykonawca>
<tytulUtworu>Where is my mind</tytulUtworu>
<gatunekMuzyczny>Rock</gatunekMuzyczny>
</utwor>
<utwor>
<wykonawca>The Pixies</wykonawca>
<tytulUtworu>Where is my mind</tytulUtworu>
<gatunekMuzyczny>Rock</gatunekMuzyczny>
</utwor>
<utwor>
<wykonawca>The Pixies</wykonawca>
<tytulUtworu>Where is my mind</tytulUtworu>
<gatunekMuzyczny>Rock</gatunekMuzyczny>
</utwor>
</soundtrack>
</film>
</filmy>
我不明白的问题,它说没有子元素的预期,是有孩子数量限制吗?我可以扩展它吗?
我已经找到了我的问题的答案,可以相乘的元素必须具有maxOccurs =“unbounded”属性。
答
我已经找到了我的问题的答案,可以相乘的元素必须具有maxOccurs =“unbounded”属性。
答
只是在这里添加另一个答案,因为接受的答案并不完全帮助我。
因此,如果您在这里有类似于问题提问者的结构,则不能将maxOccurs="unbounded"
放在最外面的元素包装上,因为它将被视为全局元素。
你必须,而不是把它像这样所有潜在要素:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="filmy">
<xs:complexType>
<xs:sequence>
<xs:element name="film">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="tytul"/>
<xs:element maxOccurs="unbounded" name="gatunek"/>
<xs:element maxOccurs="unbounded" name="czasTrwania"/>
<xs:element maxOccurs="unbounded" name="premiera"/>
<xs:element maxOccurs="unbounded" name="produkcja"/>
<xs:element maxOccurs="unbounded" name="rezyser"/>
<xs:element maxOccurs="unbounded" name="scenariusz"/>
...等
答
接受这个问题的答案,确实会解决问题,但不“正确”的解决方案。
的原因,增加无限,作品,就是XSD现在允许多个序列,即
<filmy>
<sequence>
<element_3>
</sequence>
<sequence>
<element_2>
<sequence>
<sequence>
<element_1>
<sequence>
</filmy>
你应该做些什么来解决这个问题,就是添加序列的元素,内容,按照正确的顺序,即是这样的:
filmy.getContent().add(element1)
filmy.getContent().add(element2)
filmy.getContent().add(element3)
,这将给你:
<filmy>
<sequence>
<element_1>
<element_2>
<element_3>
<sequence>
</filmy>
即只有一个序列,因此不需要*。
您应该将解决方案作为答案发布,然后等待48小时并“接受”您自己的答案。这将标志着用正确的解决方案为未来用户解答的问题。你不会得到任何积分,但你会使网站更好 – 2012-02-18 18:36:54
其实你会得到2分来标记答案。 – 2012-02-19 10:13:52