Проблемы с импортом NameSpace в Xquery - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь импортировать мое пространство имен, но по какой-то причине оно не сдвинется с места. Я попробовал это, а также добавил путь

import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";

Я продолжаю получать эту ошибку:

Error in schema http://www.w3.org/2001/XMLSchema: No valid schema was found

Я тоже устал от "-Instance", но безуспешно. Я бегу саксонский EE. Я попытался добавить свой путь к файлу. Я не уверен, что не так. Это шаблон, который предоставил нам мой учитель.

Остальная часть моего кода, если необходимо:

import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";
<provider>{
    for $r in
    distinc-values(doc("instance.xml")/r:patient/r:treatment/r:provider)
    return
        <info>
        <patient>{string($r)}</patient>
            {for $rr in doc("instance.xml"/r:patient
            where $r = $rr/r:treatment}
            return
                <treatment>
                    <id>{$rr/r:id/text()}</id>
                   <diagnosis>{$rr/r:diagnosis/text()}</diagnosis>
                   <drug>{$rr/r:drug/text()}</drug>
                </treatment>

        </info>
}</provider>

This is the template my teacher provided us

1 Ответ

0 голосов
/ 17 февраля 2020

Не очень ясно, чего вы пытаетесь достичь, но очень ясно, что вы делаете неправильно.

Когда вы пишете

import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";

, вы

(а) пытается загрузить схему в расположении "Assignment-Xquery3.xsd". Это, вероятно, хорошо; Я осмелюсь сказать, что в этом месте, вероятно, имеется действительная схема.

(b) утверждая, что схема в этом месте имеет целевое пространство имен "http://www.w3.org/2001/XMLSchema". Это кажется маловероятным, поскольку пользовательские приложения вряд ли захотят получить доступ к схеме для документов схемы.

(c), связывающий префикс "r" с этим пространством имен. Опять же, это кажется неправдоподобным, (i) потому что обычный префикс, который люди используют для этого пространства имен, это «xs» или «xsd», и (ii) потому что вы go хотите использовать имя r:treatment, и, конечно, нет имени в этом пространстве имен с локальным именем «treatment».

Я сильно подозреваю, хотя не могу быть уверен, что вы вообще не хотите импортировать схему; Вы просто хотите привязать префикс "r" к некоторому пространству имен (возможно, http://www.example.org/review, но мы не можем быть уверены). Если это так, то вы просто хотите

declare namespace r = "http://www.example.org/review";
...