Объявите тип с атрибутом и текстом, ограниченным шаблоном - PullRequest
0 голосов
/ 03 июля 2011

Я хочу объявить следующий тип:

<partCode negation="true|false">\*|[0-9]{1,9}</name>

с логическим атрибутом и только текстовым содержимым, ограниченным шаблоном (* или числом).

У меня пока есть следующий XSD:

<xs:complexType name="partCode">
    <xs:simpleContent>
        <xs:restriction base="xs:string">
            <xs:pattern value="\*|[0-9]{1,9}" />
        </xs:restriction>
        <xs:extension base="xs:string"> <-- error
            <xs:attribute name="negation" type="xs:boolean" use="optional" default="false" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

Но в нем содержится ошибка:

Элемент extension уже существует в модели содержимого

Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 05 июля 2011
<xs:complexType name="PartCodeValue">
    <xs:simpleContent>
        <xs:extension base="xs:string">
            <xs:attribute name="negation" type="xs:boolean" use="optional" default="false" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>
<xs:complexType name="PartCode">
    <xs:simpleContent>
        <xs:restriction base="PartCodeValue">
            <xs:pattern value="\*|[0-9]{1,9}" />
        </xs:restriction>
    </xs:simpleContent>
</xs:complexType>
0 голосов
/ 03 июля 2011

Вы не можете ограничивать и расширять один и тот же шаг.Сначала определите ограничение xs:string, которое удовлетворяет шаблону;затем определите расширение этого, которое добавляет атрибут.

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