XSD проверяет значение дочернего ссылочного элемента - PullRequest
1 голос
/ 09 сентября 2011

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

В этом конкретном случае XML будет выглядеть следующим образом:

            <Format>
                <name>
                    <gco:CharacterString>IMG</gco:CharacterString>
                </name>
                <version>
                    <gco:CharacterString>Version 1.0</gco:CharacterString>
                </version>
            </Format>

Требуется, чтобы все значения были проверены как gco: CharacterString , на которые ссылается отдельное пространство имен (это действительно простой тип xs: string в другом пространстве имен, но мне нужно сослаться на него).

Мне нужно имя и версия для проверки конкретных перечислений значений внутри их gco: CharacterString дочерний узел.В этом случае я хочу проверить, что следующие перечисления существуют и действительны для gco: Characterstring :

name: IMG GEO NIT

версия: версия 1.0 версия 2.0 версия3.0

Добавление перечислений к ссылочной gco: Characterstring не вариант, потому что мне нужно, чтобы они были специфичны как для версии , так и name .Можно ли настроить это в XSD?

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Нет в XML Schema 1.0.

С XML Schema 1.1 - что-то вроде:

<assert test="(name/gco:CharacterString eq 'IMG)
              and (version/gco:CharacterString eq 'Version 1.0')"/>
0 голосов
/ 09 сентября 2011

Это невозможно в XSD 1.0. В XSD есть встроенное предположение, что правила проверки элементов в пространстве имен не зависят от контекста: то есть, если одно пространство имен импортирует другое, правила для элементов во втором пространстве имен не будут зависеть от того, где эти элементы встречаются. Я бы сказал, что вы не используете пространства имен «правильно».

...