У меня есть следующий XML-код:
<stereotypes>
<stereotype1/>
<stereotype2/>
</stereotypes>
Проблема в том, что мне нужен общий атрибут для каждого стереотипа, который имеет разные значения для каждого типа стереотипа.
На самом деле я не уверенэто даже возможно, или если я могу реализовать такую вещь.Я попробовал это, используя следующие фрагменты схемы (установка атрибута пути).Я хотел бы дать этому атрибуту фиксированное значение для каждого типа стереотипа.Цель состоит в том, чтобы сгенерировать getPath в классе AbstractStereotype и использовать его универсальным образом.Проблема в том, что я не могу найти способ определения значения атрибута в определенных стереотипах.
<xs:element name="stereotypes" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="stereotype1" type="Stereotype1" />
<xs:element name="stereotype2" type="Stereotype2"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="AbstractStereotype" abstract="true">
<xs:attribute name="path" type="amf-base:FQN" use="required"></xs:attribute>
</xs:complexType>
<xs:complexType name="Stereotype1">
<xs:complexContent>
<xs:extension base="AbstractStereotype">
<!-- <xs:attribute name="path" type="amf-base:FQN" fixed="my.path.to.Class1"/> -->
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Stereotype2">
<xs:complexContent>
<xs:extension base="AbstractStereotype">
<!-- <xs:attribute name="path" type="amf-base:FQN" fixed="my.path.to.Class2"/> -->
</xs:extension>
</xs:complexContent>
</xs:complexType>
Любые другие предложения, которые позволили бы мне "создать метод getPath, сгенерированный в классе AbstractStereotypeи использовать его в общем виде »было бы очень признательно.
РЕДАКТИРОВАТЬ: Может быть, чтобы быть более ясным о результате, мне нужно.
public abstract class AbstractStereotype {
public String getPath();
}
public class Stereotype1 extends AbstractStereotype {
public String getPath() {
return "Path1";
}
}
public class Stereotype2 extends AbstractStereotype {
public String getPath() {
return "Path2";
}
}
Мне нужноэто потому, что я хочу относиться к этим стереотипам одинаково:
public void someMethod() {
for(AbstractStereotype stereotype: getStereotypes()) {
System.out.println(stereotype.getPath());
}
}
Как я уже говорил, я даже не уверен, что это возможно при использовании этого подхода.