[XML-Schema] реализация наследования
попробуй описать каждый тип объекта отдельно как обычно без всяких наследований, а потом сделать от них от всех xsd:choose
но смущает то, что есть атрибут base у simpleType и complexType - они позволяют указать базовый тип. а внутри - ограничения относительного базового типа.
только вот как выбрать базовый тип так, чтобы можно было и простые типы описывать (не содержащие внутри тэгов и сложные..
мне кажется, такая возможность должна быть, просто я пока не знаю как
Если можно - его в базовый тип и пихай. А так имхо не стоит оно того, чтобы сильно запариваться.
хотя (чисто гипотетически) вопрос остаётся открытым
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="container">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="component" type="parent" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="parent" abstract="true"/>
<xsd:complexType name="childA">
<xsd:complexContent>
<xsd:extension base="parent">
<xsd:sequence>
<xsd:element name="a" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="atr" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="childB">
<xsd:complexContent>
<xsd:extension base="parent">
<xsd:sequence>
<xsd:element name="b" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
XML DOCUMENT
<?xml version="1.0" encoding="UTF-8"?>
<container xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Test.xsd">
<component xsi:type="childA" atr="value of atr">
<a>content of a</a>
</component>
<component xsi:type="childB">
<b>content of b</b>
</component>
</container>
обязательно нужно указывать конкретный тип потомок при использовании элемента:
<component xsi:type="childA" ...>
<component xsi:type="childB">
Оставить комментарий
oleg1331
Возможно ли (кто-нибудь знает как?) реализовать на XML-Schema что-то типа наследования? то есть строго описать конструкции типагде CONTENT зависит от ObjectType и может быть как простым типом (строка, число, дата и т.п. так и сложным (содержать в себе другие тэги, ComplexType, если в терминах XML-Schema)
И после всего этого описания верна ли будет конструкция вида
где TObject - это базовый тип для всех объектов