XSD: как импортировать тип данных из другого XSD? - PullRequest
1 голос
/ 01 июля 2010

У меня есть следующий запуск XSD:

<?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:no="http://www.sychophants.com">
<xs:import namespace="http://www.sychophants.com" schemaLocation="current_obs.xsd"/>

... и затем некоторые другие определения ...

<xs:element name="noInDatPletd" ref="no:in_dat"/>

Где in_dat существует в схеме, написанной другойорганизация.По сути, я хочу создать схему, которая будет содержать элемент типа in_dat, определенный в XSD другой организации.

Я даже близок к тому, чтобы это исправить?Я довольно плохо знаком с XML.

Я продолжаю получать

    http://location_of_my_xsd/temp.xsd:79:9: Invalid: Undefined element 
    no{http://www.sychophants.com}:in_dat referenced from content model 

от http://www.w3.org/2001/03/webdata/xsv,, который является средством проверки схемы.

Спасибо.

edit: Спасибо вам обоим, кто ответил.Проблема заключается в том, что другая организация не определила атрибут targetNamespace в своей схеме.В результате я не могу импортировать пространство имен в свою схему, что означает, что я не могу использовать предоставленный тип.

Мне пришлось скопировать / вставить код, чего я и хотел избежать ... но вы можетеЯ думаю, не все, что вы хотите.

Ответы [ 2 ]

3 голосов
/ 01 июля 2010

Я вижу только одну очевидную ошибку: вы используете ref="no:in_dat" для ссылки на тип.Вы должны использовать type="no:in_dat" там.ref будет ссылаться на глобальный элемент (и не должен использоваться вместе с атрибутом name).

Кроме того, передали ли вы внешнюю схему в валидатор рядом с вашей собственной схемой?Конечно, это необходимо для проверки с помощью вашей схемы.

1 голос
/ 01 июля 2010

Помимо изменения ref = на type = , ваше определение схемы выглядит правильно.Из сообщения об ошибке я предполагаю, что средство проверки схемы не может загрузить current_obs.xsd из предоставленного расположения схемы, что имело бы смысл.Валидатор не сможет проверить, существует ли тип с именем in_dat , поскольку он не может импортировать схему.

...