Как изменить схему XSD для выполнения определенного xquery - PullRequest
0 голосов
/ 19 октября 2019

Мне нужно изменить схему XSD, чтобы я мог выполнить конкретный XQuery в поисках имени типа

Я пытался поиграться с пространствами имен, но не смог сделать это правильно.

Это XSD-схема:

<xs:group name="Axiom" >
    <xs:choice >

        <xs:element ref="el-typed:equivalent"/>
        <xs:element ref="el-typed:subsumes"/>
        <xs:element ref="el-typed:instance-of"/>
        <xs:element ref="el-typed:related-to"/>
    </xs:choice>

</xs:group>

<xs:element name="equivalent">

    <xs:complexType>

        <xs:sequence >
            <xs:group  minOccurs="2" maxOccurs="unbounded" ref="el-typed:ClassExpression"/>
        </xs:sequence>

    </xs:complexType>

</xs:element>

<xs:element name="subsumes">
    <xs:complexType>
        <xs:sequence>
            <xs:group minOccurs="2" maxOccurs="2" ref="el-typed:ClassExpression"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="instance-of">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="el-typed:constant"/>
            <xs:group ref="el-typed:ClassExpression"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="related-to">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="el-typed:constant"/>
            <xs:element ref="el-typed:constant"/>
        </xs:sequence>
        <xs:attribute name="prop" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
</xs:element>

И это XQuery:

(validate {doc("el1.xml")})//element(*,Axiom)

При использовании в правильно сформированном XML, действительном для схемы, оно должно вернуть всеАксиомы типа, которые являются элементами: equivalent, subsumes, instance-of, related-to.

В момент, когда Кислород говорит это о XQuery:

Неизвестный типимя Q {http://www.cs.manchester.ac.uk/pgt/COMP60411/el}Axiom

1 Ответ

1 голос
/ 20 октября 2019

Вы не можете использовать имя типа «Аксиома», если оно не объявлено в схеме, на которую ссылается объявление «схемы импорта» в запросе, или каким-либо эквивалентным (определяемым поставщиком) способом сделать схему известной запросу. процессор. Сообщение об ошибке подсказывает мне, что схема не была известна обработчику запросов, а не то, что вам нужно изменить схему.

Более того: сообщение об ошибке, относящееся к Q {http://www.cs.manchester.ac.uk/pgt/COMP60411/el}Axiomпредполагает, что где-то должно быть объявлено пространство имен по умолчанию. Вы не показали нам ничего, что объявляло бы это пространство имен;на самом деле кажется, что вы тщательно обрезали что-либо из схемы или запроса, объявляющего пространства имен. Поскольку ваш вопрос говорит о том, что вы подозреваете проблему, связанную с пространством имен, это кажется бесполезным.

...