Может ли определенный тег XML-схемы иметь различные ограничения в зависимости от типа данных? - PullRequest
0 голосов
/ 15 января 2010

Я работаю над собственным форматом XML, который включает отформатированный список точек. Мы хотели бы поддерживать несколько типов систем координат, таких как декартова и сферическая. Можно ли это сделать?

Пример:

<point type="cartesian">
<c1>5.0</c1>
<c2>5.6</c2>
<c3>9.1</c3>
</point>
<point type="spherical">
<c1>5.0</c1>
<c2>5.6</c2>
<c3>9.1</c3>
</point>

Там, где автоматически устанавливаются границы для сферических координат, при которых c1 остается положительным, а c2, c3 в диапазоне от 0 до 2PI. Пока нет границ для c1 до c3 в декартовой версии. Если это не может быть записано как Схема, могу я хотя бы сделать это так?

<point type="cartesian">
<c1 type="cartesian">5.0</c1>
<c2 type="cartesian">5.6</c2>
<c3 type="cartesian">9.1</c3>
</point>
<point type="spherical">
<c1 type="spherical">5.0</c1>
<c2 type="spherical">5.6</c2>
<c3 type="spherical">9.1</c3>
</point>

В этом случае я знаю, что могу наложить ограничения на элемент по его типу, но могу ли я заставить конкретный элемент иметь тот же тип, что и его родитель?

Надеюсь, это достаточно ясно, чтобы понять, что я пытаюсь сделать здесь. Я хочу ограничить тип данных, которые будут принимать типы c1 - c3, установив тип точечного элемента.

1 Ответ

3 голосов
/ 15 января 2010

Нет, это невозможно.

С другой стороны, вы можете иметь элементы sphericalPoint и cartesianPoint, которые расширяют point. При некоторых обстоятельствах вы можете ограничить типы дочерних элементов, предполагая, что они являются подмножеством типа родительских элементов. Вы также можете добавить дочерние элементы, которых не было в базовом типе.

...