在xsd中,我包含并导入一些元素。 导入的一个未解决,我收到此错误:
错误:src-resolve:无法将名称'crq1:CoverageRequest'解析为(n)'类型定义'组件。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Test4"
xmlns:crq1="http://www.example.org/CoverageRequestOffer"
xmlns:tns="http://www.example.org/Test4">
<xsd:import namespace="http://www.example.org/CoverageRequestOffer"
schemaLocation="CoverageRequestOffer.xsd" />
<xsd:include schemaLocation="OfferScope.xsd"/>
<xsd:include schemaLocation="OfferConstraints.xsd"/>
<xsd:include schemaLocation="PricingConstraints.xsd"/>
<xsd:element name="OfferRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Configuration" type="tns:OfferScope" />
<xsd:element name="Coverage" type="crq1:CoverageRequest" /> <!-- ***** error ***** -->
<xsd:element name="ResponseConstraints" type="tns:OfferConstraints"/>
<xsd:element name="RequestConstraints" type="tns:PricingConstraints"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:tns="http://www.example.org/Test4"
targetNamespace="http://www.example.org/CoverageRequestOffer"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.example.org/Test4"
schemaLocation="TypeOfVehicule.xsd" />
<xsd:import namespace="http://www.example.org/Test4"
schemaLocation="Insured.xsd" />
<xsd:import namespace="http://www.example.org/Test4"
schemaLocation="TypeOfCoverageCategory.xsd" />
<xsd:element name="CoverageRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PurchaseDate" type="xsd:dateTime" />
<xsd:element name="StartDate" type="xsd:dateTime" />
<xsd:element name="EndDate" type="xsd:dateTime" />
<xsd:element name="VehicleCategory" type="tns:TypeOfVehicule" />
<xsd:element name="TravelDestination" type="xsd:string"
minOccurs="0" maxOccurs="255" />
<xsd:element name="DiscountCodes" type="xsd:string"
maxOccurs="unbounded" minOccurs="0" />
<xsd:element name="DeductibleCode" type="xsd:string"
minOccurs="0" maxOccurs="25" />
<xsd:element name="ProvinceOfResidence" type="xsd:string"
minOccurs="1" maxOccurs="255" />
<xsd:element name="Insured" type="tns:Insured"
minOccurs="1" />
<xsd:element name="CoverageCategory" type="tns:TypeOfCoverageCategory" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
在命名空间中:http://www.example.org/Test4,存在CoverageRequest类型。
有任何解决此错误的信息吗?
答案 0 :(得分:1)
您指的是名为“crq1:CoverageRequest”的类型,但只有一个具有该名称的元素。
换句话说,解析器正在寻找像
这样的东西<xsd:complexType name="CoverageRequest">
但你有
<xsd:element name="CoverageRequest">
答案 1 :(得分:1)
有两种可能的解决方法:
将名为CoverageRequest的复杂类型的声明添加到名称空间http://www.example.org/CoverageRequestOffer的模式文档中(如果您控制该模式文档)。
或者(假设您想要的类型是CoverageRequest元素的类型)将复杂类型移出CoverageRequest元素声明,因此架构的相关部分显示为:
<xsd:element name="CoverageRequest"
type="tns:CoverageRequest"
xmlns:tns="http://www.example.org/CoverageRequestOffer">
<xsd:complexType name="CoverageRequest">
<xsd:sequence>
<xsd:element name="PurchaseDate" type="xsd:dateTime" />
<xsd:element name="StartDate" type="xsd:dateTime" />
...
</
</
更改名称空间http://www.example.org/Test4的架构,不是引用类型,而是引用元素。
具体来说,在元素OfferRequest的声明中,更改
<xsd:element name="Coverage" type="crq1:CoverageRequest" />
到
<xsd:element ref="crq1:CoverageRequest" />
这不完全相同,因为您的XML现在需要有一个名为crq1:CoverageRequest
(或等效物)的元素作为OfferRequest的第二个子元素,而不是名为test4:Coverage
的元素(或相当于)。但是,如果您不控制名称空间http://www.example.org/CoverageRequestOffer的架构文档,那么它可能是最好的选择。