В файле XSD У меня есть этот тип элемента базы:XSD: Как установить значения атрибутов в типе дочерних элементов?
<xs:complexType name="event" abstract="true" >
<xs:attribute name="move" type="aos:move_ref" use="required" />
<xs:attribute name="type" type="aos:event_type" use="required" />
</xs:complexType>
И я хочу, чтобы определить значение атрибута type
в типах детей, поэтому я попытался это:
<xs:complexType name="signal" >
<xs:complexContent>
<xs:extension base="aos:event">
<xs:attribute name="type" type="aos:event_type" fixed="signal" />
<xs:attribute name="source" type="aos:signal_source" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
Visual Studio кажется, не беспокоит, но CodeSynthesis C++ code generator, кажется, не согласны:
error: attribute 'type' is already defined in base
Как я должен написать это? Я просто хочу, чтобы значение атрибута type
было специфичным для каждого другого дочернего типа.
редактировать ----
Чтобы сделать вопрос более ясным, я буду писать то же самое, что я хочу сделать, но в C++.
Вот базовый класс:
class Event
{
public:
std::string name() const { return m_name; }
protected:
// we need the child class to set the name
Event(const std::string& name) : m_name(name) {}
// it's a base class
virtual ~Event(){}
private:
std::string m_name;
};
Теперь, один из детей могут быть реализован следующим образом:
class Signal : public Event
{
public:
Signal() : Event("signal"){}
};
Как вы можете видеть, дочерний класс определяет значение атрибутов, определяются базовым классом. Можно ли даже выразить в xsd?
вы можете получить нам образец XML, пожалуйста? –
Действительно ли это необходимо? Я могу, но я не понимаю, как это может помочь. Вам нужен какой-то прецедент? – Klaim
Нет, я просто хочу уточнить, непонятно с ур-выражением типа «Я просто хочу, чтобы значение атрибута типа было специфичным для каждого другого дочернего типа», если вы хотите определить атрибут ** по-разному ** под тем же child/entity, тогда это невозможно, так как если вы хотите определить одинаковый атрибут по-разному для разных сущностей/детей, то это вполне возможно. –