Halihallo Thomas
Input.xml
<component>
<class name="v1" />
<class name="v2" extends="v1"/>
<class name="v3" extends="v2"/>
<class name="v21" extends="v1"/>
<class name="v31" extends="v21"/>
</component>Dein Doc.xml schaut aber anders aus:
<class name="DocParser">
<method restriction="public" name="parseTree">
<in>
<item type="instance" class="XML.DOM.Document">DOMDocument</item>
</in>
</method>
</class><class name="DocComponent" extends="XML.DOM.Document">
</class>
Hier verweist eine Klasse nicht auf eine andere Klassen, sonder nur auf eine Methode einer Klasse.
Ich kann beim besten Willen nicht sehen, aufgrund welcher Information du dies folgerst.
Oder: z.B. es gibt öfters Klassen die ein "extends="XML.DOM.Element"" haben, aber es gibt keine Klasse mit einem Namen "XML.DOM.Element". Das selbe ist mit extends="XML.DOM.NodeList.
Aha, ja, das war eine kleine Inkonsistenz im Datenmodell, welche ich mit
<external_component> und <external_class> umgehen werde. Die referenzierten Klassen
gehören nicht zur Komponente, die Dokumentiert werden soll, sondern zu einer anderen
Komponente, die ich mit <external_*> abbilden (nur den Komponentenname und -Klassen;
die Doku soll die andere Komponente (XML.DOM in diesem Falle) nicht auch noch umfassen,
deshalb sind das nur "Querverweise" und Informationen, die für den Index gebraucht
werden) werde. Aber wie kommst du auf "Methoden einer Klasse"? - XML.DOM.Document und
-Element sind Klassen der Komponente XML.DOM.
Sprich, mir scheint deine doc.xml etwas inkonsistent zu sein um daraus ein Inhaltsverzeichniss generieren zu können. Es gibt keine Querverweise die man nutzen könnte.
In der vorliegenden Version hast du recht. Entschuldigung, dass ich die neue Version
nicht genannt habe:
<library>
<component name="DocComponent">
... <!-- das alte -->
</component>
<external_component name="XML.DOM">
<external_class name="XML.DOM.Document" extends="XML.DOM.Node"></external_class>
<external_class name="XML.DOM.Element" extends="XML.DOM.Node"></external_class>
<external_class name="XML.DOM.NodeList" extends="XML.DOM.Node"></external_class>
<external_class name="XML.DOM.Node"></external_class>
</external_component>
</library>
Optional external_component mit Attribut src um eine externe Ressource ggf. einzulesen.
Viele Grüsse
Philipp