xsd: расширение не работает: src-resol: не удается разрешить имя «BaseObj» в (n) компонент «определение типа» - PullRequest
0 голосов
/ 15 марта 2019

BaseObj.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://dummy/models/BaseObj" 
    targetNamespace="http://dummy//models/BaseObj" elementFormDefault="qualified">

    <xsd:element name="bo" type="BaseObj" />
    <xsd:complexType name="BaseObj">
        <xsd:sequence>
            <xsd:element name="one" type="xsd:string" />
        </xsd:sequence> 
    </xsd:complexType>
</xsd:schema>

ChildObj.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://dummy/models/ChildObj"
    targetNamespace="http://dummy/models/ChildObj" elementFormDefault="qualified">

    <xsd:import namespace="http://dummy/models/BaseObj" schemaLocation="BaseObj.xsd" />

    <xsd:element name="co" type="ChildObj" />
    <xsd:complexType name="ChildObj">
        <xsd:complexContent>
            <xsd:extension base="BaseObj">
                <xsd:sequence>
                    <xsd:element name="two" type="xsd:string" />
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>`

`

При обработке вышеуказанного ChildObj не распознает BaseObjand throws Не удается разрешить имя «BaseObj» для (n) компонента «определение типа».Из того, что я понял, я импортировал необходимую схему

1 Ответ

1 голос
/ 15 марта 2019

В ваших XSD есть две ошибки:

  1. В BaseObj.xsd ваш

    targetNamespace="http://dummy//models/BaseObj"
    

    содержит лишнее /.Измените его на

    targetNamespace="http://dummy/models/BaseObj"
    
  2. В ChildObj.xsd вы не определили пространство имен для вашего элемента BaseObj.Это выглядит как

    <xsd:extension base="BaseObj">
    

    Чтобы исправить это, добавьте объявление пространства имен к вашему элементу xsd:schema, например

    ... xmlns:base="http://dummy/models/BaseObj" ...
    

    , а затем измените вышеуказанное значение xsd:extension на

    <xsd:extension base="base:BaseObj">
    

Теперь ваши схемы должны проверяться, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...