XML验证报错:无法解析'kontekst:HovedOplysninger'元素声明的含义?
XML验证错误解析:
Src-resolve: Cannot Resolve The Name 'kontekst:HovedOplysninger' To A(n) 'element Declaration' Component 问题背景
从未接触过XML的用户在验证一份XML文档时收到上述错误,以下是错误提示、关联的XML和XSD代码,以及错误含义的解析。
错误提示
Src-resolve: Cannot Resolve The Name 'kontekst:HovedOplysninger' To A(n) 'element Declaration' Component.
相关代码
XML代码
<?xml version="1.0" encoding="UTF-8"?> <urn:VirksomhedKalenderHent_I xmlns:urn="urn:oio:skat:nemvirksomhed:ws:1.0.0" xmlns:ns="http://rep.oio.dk/skat.dk/basis/kontekst/xml/schemas/2006/09/01/" xmlns:ns1="http://rep.oio.dk/skat.dk/motor/class/virksomhed/xml/schemas/20080401/" xmlns:urn1="urn:oio:skat:nemvirksomhed:1.0.0"> <ns:HovedOplysninger> <ns:TransaktionIdentifikator>33593B0D-E7CF-40A2-AE76-530B72DE6AE3</ns:TransaktionIdentifikator> <ns:TransaktionTid>2017-04-24T12:00:00.146+02:00</ns:TransaktionTid> </ns:HovedOplysninger> <ns1:VirksomhedSENummerIdentifikator>12345678</ns1:VirksomhedSENummerIdentifikator> <urn1:AngivelseTypeNavn>qwerty</urn1:AngivelseTypeNavn> <urn:AngivelseBetalingFristHentFra> <urn1:SoegeDatoFraDate>2017-01-01</urn1:SoegeDatoFraDate> <urn1:SoegeDatoTilDate>2017-03-31</urn1:SoegeDatoTilDate> </urn:AngivelseBetalingFristHentFra> </urn:VirksomhedKalenderHent_I>
XSD代码
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:nemvirksomhedws="urn:oio:skat:nemvirksomhed:ws:1.0.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:oio:skat:nemvirksomhed:ws:1.0.0" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0" xmlns:nemvirksomhed="urn:oio:skat:nemvirksomhed:1.0.0" xmlns:virksomhed="http://rep.oio.dk/skat.dk/motor/class/virksomhed/xml/schemas/20080401/" xmlns:kontekst="http://rep.oio.dk/skat.dk/basis/kontekst/xml/schemas/2006/09/01/" xml:lang="DA"> <xs:annotation> <xs:documentation/> </xs:annotation> <xs:import namespace="http://rep.oio.dk/skat.dk/basis/kontekst/xml/schemas/2006/09/01/" schemaLocation="../../../../skat_dk/basis/kontekst/xml/schemas/2006/09/01/HovedOplysninger.xsd"/> <xs:import namespace="urn:oio:skat:nemvirksomhed:1.0.0" schemaLocation="../../1_0_0/SoegeDatoTilDate.xsd"/> <xs:import namespace="urn:oio:skat:nemvirksomhed:1.0.0" schemaLocation="../../1_0_0/SoegeDatoFraDate.xsd"/> <xs:import namespace="http://rep.oio.dk/skat.dk/motor/class/virksomhed/xml/schemas/20080401/" schemaLocation="../../../../skat_dk/motor/class/virksomhed/xml/schemas/20080401/VirksomhedSENummerIdentifikator.xsd"/> <xs:import namespace="urn:oio:skat:nemvirksomhed:1.0.0" schemaLocation="../../1_0_0/AngivelseTypeNavn.xsd"/> <xs:element name="VirksomhedKalenderHent_I" type="nemvirksomhedws:VirksomhedKalenderHent_IType"> </xs:element> <xs:complexType name="VirksomhedKalenderHent_IType"> <xs:sequence> <xs:element ref="kontekst:HovedOplysninger"/> <xs:element ref="virksomhed:VirksomhedSENummerIdentifikator"/> <xs:element ref="nemvirksomhed:AngivelseTypeNavn"/> <xs:element name="AngivelseBetalingFristHentFra"> <xs:complexType> <xs:sequence> <xs:element ref="nemvirksomhed:SoegeDatoFraDate" minOccurs="0"/> <xs:element ref="nemvirksomhed:SoegeDatoTilDate" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:schema>
错误含义及原因分析
这个错误直白来讲:XML验证器在处理XSD时,找不到命名空间http://rep.oio.dk/skat.dk/basis/kontekst/xml/schemas/2006/09/01/(XSD里用kontekst作为前缀)下名为HovedOplysninger的元素声明。
可能的具体原因:
- 导入的XSD文件路径错误:XSD中通过
schemaLocation指定的HovedOplysninger.xsd路径不存在或层级错误,导致验证器无法读取该文件。 - 目标XSD文件未定义对应元素:即使找到了
HovedOplysninger.xsd,文件里也没有声明HovedOplysninger元素,或者该元素的命名空间与导入的不匹配。 - (注:XML和XSD中的命名空间绑定是一致的,此问题可排除)
解决方向
- 检查
HovedOplysninger.xsd的路径是否正确,确认文件存在于XSD指定的相对路径下,也可尝试使用绝对路径测试。 - 打开
HovedOplysninger.xsd文件,确认其中存在<xs:element name="HovedOplysninger">的声明,且该文件的targetNamespace必须与导入的命名空间完全一致。 - 确保验证工具能正确加载所有依赖的XSD文件,部分工具需要手动配置XSD搜索路径。
内容的提问来源于stack exchange,提问作者clarkk
相关产品推荐
相关产品推荐

