XSD - ограничить / переопределить complexType с происходит 0 - PullRequest
0 голосов
/ 16 марта 2011

У меня есть пользователь ComplexType:

<xs:complexType name="User">
    <xs:all>
        <xs:element name="id" type="xs:positiveInteger" minOccurs="1" maxOccurs="1" />
        <xs:element name="email" type="email" minOccurs="1" maxOccurs="1" />
        <xs:element name="password" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
    </xs:all>
</xs:complexType>

и я должен использовать его с ограничениями на элементы minOccurs и maxOccurs.

Например, при входе в систему мне нужен пользователь только с элементами электронной почты и паролем, поэтому мне нужны любые другие элементы (id, name) с maxOccurs = 0 и minOccurs = 0.

<Auth:login>
    <User>
        <email>my@email.net</email>
        <password>mypass</password>
    </User>
</Auth:login>

Можно ли проверить приведенный выше XML-код с ограниченным комплексным типом пользователя?

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Нет: тип R может ограничивать тип B только в том случае, если все экземпляры R являются допустимыми экземплярами B. Поскольку B требует наличия идентификатора и имени, тип, который требует их (или даже разрешает их) отсутствовать, не является действительное ограничение B.

0 голосов
/ 17 марта 2011

Это возможно с утверждениями (в xsd 1.1), но я думаю, что php поддерживает только xsd 1.0: S

Я нашел здесь некоторую помощь. Я могу поместить свои подэлементы в группы и объединить фактически нужные группы.

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