Philipp Hasenfratz: Ein erster Prototyp zum testen - Komponenten-Beschreibungen

Beitrag lesen

Halihallo Thomas

Das steht so in deinem (alten?) doc.xml.

Ja. Alt sowie neu.

"extends" bedeutet für mich "[es] erweitert", also die Klasse:

Dann bedeutet es für uns beide das selbe ;-)

<class name="DocComponent" extends="XML.DOM.Document"> erweitert die Klasse "XML.DOM.Document". Es gb aber keine Klassen mit diesem Namen.

Ja, da diese auch nicht zu der zu dokumentierenden Komponente gehört. Es muss eine
Trennung zwischen verschiedenen Komponenten vorgenommen werden, besonders in der Grösse
der einzugebenden Daten, deshalb die external_* - Nodes; man soll nicht noch XML.DOM
dokumentieren, wenn man eine neue Komponente erstellen will, ist ja einleuchtend...
Die Klasse XML.DOM.Document würde in dem Fall von oben in einer <external_component
name="XML.DOM"><external_class name="XML.DOM.Document" /></external_comp.> abgebildet.
So ist die Vererbungshierarchie vollständig abbildbar, ohne die Komponenten explizit und
vollständig in die Dokumentation aufzunehmen.

Es gab nur eine Methode einer anderen Klasse mit einem "class="XML.DOM.Document" Attribut.
So nahm ich an, dass der Verweis im "extends" datauf hindeutet.
Was bedeutet sonst?
<method restriction="public" name="parseTree">
  <in>
    <item type="instance" class="XML.DOM.Document">DOMDocument</item>
</in>
</method>

Aha, hier liegt der Hacken: Die Methode parseTree erwartet als Eingabeparameter (in)
eine Instanz der Klasse XML.DOM.Document. Also etwa parseTree($dom), wobei $dom eine
Instanz der Document-Klasse von XML.DOM ist. Das hat mit dem Attribut "extends" nichts
zu tun.

Ich weiss zwar noch immer nicht was du machst und wozu das ganze ist (mich haben eben nur die Fragen um XSLT interessiert),

Nun, ich habe nichts dagegen; wenn du dich jedoch ein kleines bisschen mit dem Kontext
beschäftigt hättest, würdest du verstehen, worum es mir geht. Ich sage ja nicht, dass
es deine Aufgabe ist mich zu verstehen, oder gar mir zu helfen; aber vielleicht hilft
dir die Lektüre meiner Postings, um mein Problem besser zu verstehen, denn ich bin der
Meinung, dass ich es ausreichend erklärt habe.

aber eine referenzierte Klasse gehört in meinem Augen auch zum Komponent: dass es nicht umfassend dargestellt werden soll, ist schon klar, aber so wie es bei dir oben steht, weiss niemand außer dir welche Komponentet die <external_component name="XML.DOM"> referenziert.

Jein, eine referenzierte Klasse gehört nicht umbedingt zur Komponente; falls die
referenzierte (extends) Klasse einer andere Komponente, wie z. B. XML.DOM angehört,
gehört sie eben nicht zur aktuellen Komponente.
Die <external_component>-Nodes referenzieren keine Klassen, sie sind Kontainer für
Klassen, die eben nicht weiter ausdokumentiert werden sollen. In diesem Kontainer
werden die Klassen der (nicht zu dokumentierenden) Komponente abgebildet, aufwelche
eben ggf. referenziert wird. Beispiel:

<class name="DocComponent" extends="XML.DOM.Document">
...
<external_component name="XML.DOM">
   <external_class name="XML.DOM.Document" extends="XML.DOM.Node">...</external_class
   ...
   <external_class name="XML.DOM.Node">...</external_class>
   ...
</external_component>

Klasse "DocComponent" erweitert die Klasse "XML.DOM.Document"; das XSLT Template
sollte also entweder in <class> oder in allen <external_class> nach dem Klassennamen
"XML.DOM.Document" suchen und diesen ausgeben. Danach geht es rekursiv bei der
Klasse XML.DOM.Document weiter; ein kurzer Blick in @extends => 'XML.DOM.Node',
also geht die Suche nach der Klasse XML.DOM.Node los; also wieder alle <class>
und <external_class> nach XML.DOM.Node durchsuchen. Gefunden... aha, @extends
leer => Rekursionsbedinung erfüllt und zurück.

Das gilt natürlich nur dann, wenn du in deinem Library mehrere Komponenten beschreibst, wenn du pro Library nur eine Komponente beschreibst, ist die sache klar.

Die Library umfasst genau eine Komponente, die dokumentiert werden soll (eingeführt
durch <component>); um jedoch den ganzen Kontext zu erfassen, werden auch noch
andere Komponenten aufgenommen (<external_component>). Letztere haben einzig den
Zweck, die Vererbungshierarchien genau abbilden zu können.
Nun ja, eigentlich ist das Interface auf Perl Seite so ausgerichtet, dass auch
mehrere Componenten (ausdokumentierte) in die Library aufgenommen werden können,
aber für das XSLT geh ich jetzt von der Annahme aus, dass es nur ein Element
<component> gibt, jedoch mehrere <external_component>'s.

---
Vielleicht ein doc.xml Konflikt (tausendmal Entschuldigung, wenn ja)? -
http://www.emedias.ch/tmp/doc.xml
---

Viele Grüsse

Philipp

0 43

Klassenbeschreibungen

Philipp Hasenfratz
  • projektverwaltung
  1. 0

    Klassenbeschreibungen - Beispiele? - Vorlagen?

    Philipp Hasenfratz
    1. 0
      Simon Reinhardt
      1. 0
        Philipp Hasenfratz
  2. 0
    Andreas Korthaus
    1. 0
      Philipp Hasenfratz
  3. 0
    Philipp Hasenfratz
    1. 0
      Simon Reinhardt
      1. 0
        Martin Speiser
  4. 0
    Martin Speiser
    1. 0
      Philipp Hasenfratz
      1. 0
        Martin Speiser
        1. 0
          Philipp Hasenfratz
      2. 0
        Simon Reinhardt
        1. 0
          Philipp Hasenfratz
  5. 0

    Ein erster Prototyp zum testen - Komponenten-Beschreibungen

    Philipp Hasenfratz
    • perl
    1. 0
      Simon Reinhardt
      1. 0
        Philipp Hasenfratz
        1. 0

          Status

          Philipp Hasenfratz
          1. 0
            Simon Reinhardt
            1. 0
              Philipp Hasenfratz
              1. 0
                Simon Reinhardt
                1. 0
                  Philipp Hasenfratz
      2. 0

        XSLT Tranformierung der Componenten-XML-Datei

        Philipp Hasenfratz
        • xsl
        1. 0
          Thomas J.S.
          1. 0
            Philipp Hasenfratz
            1. 0
              Thomas J.S.
              1. 0
                Philipp Hasenfratz
                1. 0
                  Thomas J.S.
    2. 0
      Thomas J.S.
      1. 0
        Philipp Hasenfratz
      2. 0
        Simon Reinhardt
        1. 0
          Thomas J.S.
        2. 0
          Philipp Hasenfratz
          1. 0
            Thomas J.S.
            1. 0
              Philipp Hasenfratz
              1. 0
                Thomas J.S.
                1. 0
                  Philipp Hasenfratz
                  1. 0
                    Thomas J.S.
                    1. 0
                      Philipp Hasenfratz
                      1. 0
                        Thomas J.S.
                        1. 0
                          Philipp Hasenfratz
  6. 0
    Philipp Hasenfratz