2017-01-06 5 views
0

Я использую расширение типа, и я пытаюсь добавить еще один атрибут, который должен быть определенного типа. К сожалению, я могу заставить одного из них работать одновременно.Расширение XSD с дополнительным атрибутом

Пример кода (это только текущее состояние многих вещей, которые я пробовал):

<xs:complexType name="buttonBaseType"> 
    <xs:complexContent> 
     <xs:attribute name="text" type="nonEmptyString"/> 
     <xs:extension base="elementCommonInfo"/> 
    </xs:complexContent> 
</xs:complexType> 

elementCommonInfo определяет некоторые атрибуты, позволяет сказать, что 2, то, что имеет значение по умолчанию, и один, который не имеет такой вещь.

Таким образом, в этой версии код <button text="e"/> создает ошибку base-frame.xml:7:27: attribute 'text' is not declared for element 'button'. Если я переведу xs:attribute с xs:complexType на один уровень выше (до или после xs:complexType), документ проходит проверку, даже если есть атрибуты от elementCommonInfo, которые должны быть там, которых нет.

TL; DR: Как получить все атрибуты из расширения вместе с новыми атрибутами, которые я определяю в «расширяющемся» типе?

ответ

1

Может быть, вы можете попробовать его таким образом:

<xs:complexType name="buttonBaseType"> 
    <xs:simpleContent> 
     <xs:extension base="elementCommonInfo"> 
      <xs:attribute name="text" type="nonEmptyString"/> 
     </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 
+0

при условии, что 'elementCommonInfo' имеет простой тип. – Kachna