尝试针对外部XSD文件验证XML文件时出现验证错误 我收到以下错误:cvc-complex-type.2.4.a:从元素'namn'开始发现无效内容。预计会有一个'{name}' 我想这与联系人有嵌套的孩子有关...
这是XML代码
<?xml version="1.0" encoding="ISO-8859-1" ?>
<startfalt>
<person startnummer="14">
<namn>
<fornamn>Charlotte</fornamn>
<efternamn>Kalla</efternamn>
</namn>
<fodelsesiffror>790204-1712</fodelsesiffror>
<land>Sverige</land>
<klubb>IK SKidan</klubb>
<sponsor>Audi</sponsor>
<traningstimmar>1200</traningstimmar>
<prispengar valuta="kr">2300000</prispengar>
<kontaktperson>
<namn>
<fornamn>Sven</fornamn>
<efternamn>Svensson</efternamn>
</namn>
</kontaktperson>
</person>
</startfalt>
这是我的架构
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:annotation>
<xsd:documentation>Skidlandslaget</xsd:documentation>
</xsd:annotation>
<xsd:element name="startfalt">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="person" type="personType" minOccurs="1" maxOccurs="30" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="personType">
<xsd:sequence>
<xsd:element name="namn" type="nameType" />
<xsd:element name="fodelsesiffror" type="xsd:string" />
<xsd:element name="land" type="xsd:string" />
<xsd:element name="klubb" type="xsd:string" />
<xsd:element name="sponsor" type="xsd:string" />
<xsd:element name="traningstimmar" type="xsd:integer" />
<xsd:element name="prispengar" type="priceType" />
<xsd:element name="kontaktperson" type="contactType" />
</xsd:sequence>
<!--attribut for person-->
<xsd:attribute name="startnummer" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:positiveInteger">
<xsd:pattern value="\d{2}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="nameType">
<xsd:sequence>
<xsd:element name="fornamn" type="xsd:string" />
<xsd:element name="efternamn" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="priceType" mixed="true">
<xsd:attribute name="valuta" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="sek" />
<xsd:enumeration value="kr" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="contactType">
<xsd:sequence>
<xsd:element name="name" type="contactNameType" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
答案 0 :(得分:1)
你是对的,有一个相当简单的解决方法。将您的contactType更改为:
<xsd:complexType name="contactType">
<xsd:sequence>
<xsd:element name="namn" type="nameType" />
</xsd:sequence>
</xsd:complexType>