XSD наследование и форма xhtml - PullRequest
       4

XSD наследование и форма xhtml

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

Я ищу XSD, описывающий класс экземпляров. Я объясню, что я пытаюсь выполнить на примере примера. Я хотел бы иметь тип XSD (назовем его FormBaseType), описывающий этот экземпляр:

<form method="post" action="someaction" name="acme">
    <input name="EXACTLY FOO" value="EXACT ENUMERATION" type="CONST STRING" />
    <input name="SOME RANDOM STRING" value="SOME RANDOM STRING" type="CONST STRING" />
    <input name="SOME RANDOM STRING" value="SOME RANDOM STRING" type="CONST STRING" />
    ... (input element repeats up to 30 times) ...
</form>

Чем бы я хотел, чтобы OneKindOfMyFormType наследовал и ограничивал FormBaseType, чтобы он соответствовал только таким экземплярам:

<form method="post" action="someaction" name="acme">
    <input name="EXACTLY FOO" value="EXACT ENUMERATION" type="CONST STRING" />
    <input name="EXACTLY BAR" value="SOME RANDOM STRING RESTRICTION" type="CONST STRING" />
    <input name="EXACTLY BAZ" value="SOME OTHER RANDOM STRING RESTRICTION" type="CONST STRING" />
    ... (input element repeats up to 30 times) ...
</form>

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

<xs:complexType name="FormBaseType">
    <xs:sequence>
        <xs:element name="input" type="ns0:InputType" minOccurs="1" maxOccurs="33"/>
    </xs:sequence>
</xs:complexType>

Но когда я попробую это:

<xs:complexType name="RequestType">
    <xs:complexContent>
        <xs:restriction base="RequestTypeBase">
            <xs:sequence>
                <xs:element name="input" type ="ns0:AlphaNumericInputType" minOccurs="1" maxOccurs="1" />
                <xs:element name="input" type ="ns0:NumericInputType" minOccurs="1" maxOccurs="1" />
            </xs:sequence>
        </xs:restriction>
    </xs:complexContent>
</xs:complexType>

существует проблема в том, что элементы с одинаковым именем («вход») и в одной и той же области видимости должны иметь одинаковый тип. (AlphaNumericInputType и NumericInputType являются ограничениями InputType, но для примера это не имеет значения, за исключением, возможно, разъяснения моих намерений).

Короче говоря, я хотел бы получить XSD-описание нескольких форм, в которых некоторые элементы input одинаковы для всех видов форм (базовых), а также для производных типов XSD * 1017. * input элементы, имеющие базовый атрибут type плюс точное значение атрибута name и для этого точного имени value ограничение типа атрибута.

Возможно ли это? Как?

ТИА

1 Ответ

0 голосов
/ 12 сентября 2011

Согласно моим выводам, это невозможно сделать. Пожалуйста, подтвердите это, если у вас есть опыт.

name , value и type являются атрибутами XML. Спецификация XML явно заявляет, что атрибуты НЕ упорядочены. Синтаксический анализатор XML должен уметь анализировать ввод с помощью одного токена. Таким образом, невозможно ограничить тип одного атрибута путем фиксирования значения другого атрибута. Подвох заключается в том, что атрибут, значение которого вы хотите ограничить по типу, может появиться раньше, чем атрибут, значение которого должно определить тип ограниченных атрибутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...