xsl-list
[Top] [All Lists]

RE: Output of a FLowchart from XML

2004-03-08 01:50:11

    I agree -- although schedule may be an issue.  The 
    transformation to the text format for input into the 
    flowcharting app would probably be similar to the task of 
    transforming to the "flowchart primitives".  I may go with 
    the flowcharting app solution for the first deadline, then 
    perhaps switch to a pure SVG approach.
    
    > haven't already, you should Google for XML, flowcharts, 
    SVG, XSLT. And 
    > if we're lucky we'll hear more ... watch this space.
    
    Done a fair amount of looking around, but more focused on 
    flowcharting apps that accept text as an input.  Next week 
    I'll do more specific searches in support of a pure SVG 
    approach.  And I'll look for replies to this post of course!

I looked at this problem some time ago and came to a couple of 
conclusions.

1. Easy enough to draw the shapes you need. Even easier in XSLT 2.0
with user functions.
2. Not quite so easy to wrap the text inside the shapes, though
its probably doable with a little human intervention.
3. Its a pig to place the shapes on a blank page.
4. Its a pig to link them 'nicely', with shapely lines.

My solution was to shift the problem to java or graphviz.

The java looks something like
        fc.process(100,100,"Process one");
        fc.process(260,190,"Process Two");
        fc.carr ( fc.processHook(100,100,RHS),
fc.processHook(260,190,LHS),"From Process one to process two." );
        fc.file(260,100,"File Store");
        fc.carr(fc.processHook(100,100,RHS),fc.dsHook(300,300,LHS),"From
process 1 to dstore");
        fc.document(300,400,"document");
        fc.carr(fc.processHook(260,190,RHS), fc.processHook(300,400,LHS),
"From process to document");
fc.carr(fc.processHook(100,100,RHS), fc.processHook(260,100,LHS),"From
process to fileStore");
        fc.carr(fc.processHook(100,100,RHS), 
                fc.processHook(500,400,LHS),"From 1-4");
        fc.carr(fc.processHook(500,100,LHS), 
                fc.processHook(100,400,RHS),"From 2-3");
        fc.carr(fc.processHook(500,400,LHS), 
                fc.processHook(100,100,RHS),"From 4-1");
        fc.carr(fc.processHook(100,400,RHS), 
                fc.processHook(500,100,LHS),"From 3-2");


        fc.circle (600,300,"connector");
        fc.carr (fc.processHook(100,100,RHS),
                 fc.circHook(600,300,LHS),"From 1 to circle");

with the circle, document, file being shapes, and carr being curved arrows.

Summary, its doable, but not nice, not flexible.

The xml approach combines human assistance with xslt.
Ask the person to layout the drawing, i.e. specify the x,y coordinates.
Use xslt to draw the shapes, insert the text (this list will help you get
over the shortfall in svg 1.0 whereby they can't wrap text) and maybe
even add the arrows. 

Graphviz addresses most of these problems, including placement, though it
may not be to your liking as a human, its generally very good for less
complex
drawings. Also outputs SVG as an option.

If you mandate a human review/edit as the final step, even if its just
to check what your code has done, then I guess you'll have a solid process.


As Wendell says, a real development area for xml xslt and svg, and quite
novel, as google shows.

HTH DaveP.

** snip here **

- 
DISCLAIMER: 

NOTICE: The information contained in this email and any attachments is 
confidential and may be privileged. If you are not the intended 
recipient you should not use, disclose, distribute or copy any of the 
content of it or of any attachment; you are requested to notify the 
sender immediately of your receipt of the email and then to delete it 
and any attachments from your system. 

RNIB endeavours to ensure that emails and any attachments generated by 
its staff are free from viruses or other contaminants. However, it 
cannot accept any responsibility for any  such which are transmitted.
We therefore recommend you scan all attachments. 

Please note that the statements and views expressed in this email and 
any attachments are those of the author and do not necessarily represent 
those of RNIB. 

RNIB Registered Charity Number: 226227 

Website: http://www.rnib.org.uk 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list