Как получить доступ к аннотации элемента схемы, используя Marklogi c s c: метод аннотации - PullRequest
0 голосов
/ 12 января 2020

Учитывая следующую схему

<?xml version="1.0" encoding="UTF-8"?>
<?xdmp-annotations all?> <!-- Preserve documentation annotations -->
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified"
    targetNamespace="http://my-namespace/graphql" 
    xmlns:gql="http://my-namespace/graphql">

    <xs:complexType name="Person">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="name" type="xs:string" minOccurs="1"/>
            <xs:element name="height" type="xs:string" minOccurs="0"/>
            <xs:element name="appearsIn" type="xs:string" minOccurs="0"/>
            <xs:element name="friends">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="person" type="gql:Person" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:choice>
    </xs:complexType>

    <xs:element name='person' type='gql:Person'>
        <xs:annotation>
            <xs:documentation>
            Person interface
            </xs:documentation>
        </xs:annotation>
    </xs:element>

</xs:schema>      

как мне получить доступ к документации элемента "person"?

Следующий код ничего не возвращает:

xquery version "1.0-ml";

import schema namespace gql ="http://my-namespace/graphql" at "/graphql/person.xsd";

let $element := element {xs:QName('gql:person')} {}
return 
<xml>
  {sc:element-decl($element) => sc:annotations()}
</xml>

Согласно документации, инструкции обработки "<?xdmp-annotations all?>" должно быть достаточно, чтобы гарантировать, что документация возвращается в дополнение к appinfo, нет?

1 Ответ

1 голос
/ 13 января 2020

Две вещи: 1. Ваши пространства имен не совпадают между схемой и запросом, так что получается, что вы получаете фиктивную схему для пространства имен, которая не имеет определенного объявления элемента c, поэтому она обрабатывается как любой тип. 2. Вам нужно поместить инструкцию обработки в элемент xs: schema, чтобы код синтаксического анализа схемы мог ее увидеть.

Исправьте эти две вещи, и ваш запрос будет работать нормально.

...