in reply to Re: PHP UML Diagram Generator
in thread PHP UML Diagram Generator

Great idea! I've played with Argo but didn't know that it used XML. (Duhh!)

UPDATE: Having looked into it, the standard that ArgoUML is using the OMGs XMI Specification for XML Metadata Interchange. (Corrected info on XMI)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
()-()                                                      ()-()
 \"/    DON'T   BLAME   ME,   I  VOTED   FOR    PACO!       \"/
  `                                                          ` 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Replies are listed 'Best First'.
Re: Re: Re: PHP UML Diagram Generator
by rjray (Chaplain) on Mar 01, 2002 at 22:26 UTC

    Out of curiousity, I created a simple two-class UML diagram last night and pulled the XMI file out of the zipped-argo save-file that ArgoUML creates.

    I wouldn't wish that format on anyone, not even as machine-generated output.

    --rjray

      Yes it is butt ugly although most of it can be safely ignored since it's designed to do everything under the sun (Typical XML) and PHP OO is a pretty narrow subset.

      Added to the problem is that fact that they are using a rather old version of the standard (1.0 for UML 1.3).

      UPDATE: One thing that I've noticed about the XMI doc that argo is generating is that it is haphazard in its form because it is automatically generated by the tool. This makes it look a lot uglier than it needs be. I'm able to make it alot simpler:

      #!/usr/bin/perl use strict; use warnings; ############# # HERE DOCS # ############# my %type = ( boolean => 1, integer => 2, float => 3, string => 4, array => 5, object => 6, void => 7 ); sub xmi_type { unless (@_ >= 1) { die ("\nxmi_type requires type name parameter.\n"); } my $name = shift; my $id = shift; (my $t = <<" QUOTE") =~ s/^\t\t//gm; <Foundation.Core.DataType xmi.id="xmi.$id"> <Foundation.Core.ModelElement.name>$name</Foundation +.Core.ModelElement.name> <Foundation.Core.ModelElement.isSpecification xmi.va +lue="false"/> <Foundation.Core.GeneralizableElement.isRoot xmi.val +ue="false"/> <Foundation.Core.GeneralizableElement.isLeaf xmi.val +ue="false"/> <Foundation.Core.GeneralizableElement.isAbstract xmi +.value="false"/> <Foundation.Core.ModelElement.namespace> <Foundation.Core.Namespace xmi.idref="xmi.1"/> </Foundation.Core.ModelElement.namespace> </Foundation.Core.DataType> QUOTE return $t; } # type while ((my $key, my $value) = each (%type)) { print xmi_type($key, $value); }

      This generates the XMI for all of the standard PHP datatypes.
      ()-()                                                      ()-()
       \"/    DON'T   BLAME   ME,   I  VOTED   FOR    PACO!       \"/
        `                                                          `