Loading ...
Sorry, an error occurred while loading the content.
 

xml tree representation

Expand Messages
  • Anders Svensson
    Hi, I m looking for a way to create a graph/tree representation of an xml document, i.e. not a tree of the kind you see in computer folder representations,
    Message 1 of 4 , Mar 1, 2002
      Hi,

      I'm looking for a way to create a graph/tree representation of an xml document, i.e. not a "tree" of the kind you see in computer folder representations, but the graphical tree you sometimes see in descriptions of xml structure, sort of like this (I hope this displays right in the e-mail, but if not you'll probably get my intentions):

      root
      ___|____
      | |
      e2 e2
      __|__ __|__
      | | | |
      e3 e3 e3 e3

      I need it to visualize the output of an XML/VB application. The results could be displayed on a web page or a picture box in VB. Does anyone know how to do this? Any suggestions would be appreciated, for XSL solutions or VB/DOM solutions.

      Regards,

      Anders
    • Paul Tyson
      Anders, I haven t done this sort of thing, but it s an interesting problem. The toughest part will be the tree layout. If a simple grid format would be
      Message 2 of 4 , Mar 1, 2002
        Anders,

        I haven't done this sort of thing, but it's an interesting problem.

        The toughest part will be the tree layout. If a simple grid format would be acceptable, it seems like it would be pretty easy to use SVG or EPS. You can calculate the placement of each node based on its depth and child-position. If your element name lengths vary, this might be messy.

        If you want better-looking trees, you would have to use a graph layout program. Maybe you could use Visio. The open source toolkit Graphviz might suit your purposes also (http://www.research.att.com/sw/tools/graphviz/). In either case, you could use XSLT to emit a plain text file representing the nodes and their relationships, then call the graph layout program to produce a graphic file.

        --Paul

        ----- Original Message -----
        From: "Anders Svensson" <asn@...>
        To: <XSL-FO@yahoogroups.com>
        Sent: Friday, March 01, 2002 7:18 AM
        Subject: [XSL-FO] xml tree representation


        > Hi,
        >
        > I'm looking for a way to create a graph/tree representation of an xml document, i.e. not a "tree" of the kind you see in computer folder representations, but the graphical tree you sometimes see in descriptions of xml structure, sort of like this (I hope this displays right in the e-mail, but if not you'll probably get my intentions):
        >
        > root
        > ___|____
        > | |
        > e2 e2
        > __|__ __|__
        > | | | |
        > e3 e3 e3 e3
        >
        > I need it to visualize the output of an XML/VB application. The results could be displayed on a web page or a picture box in VB. Does anyone know how to do this? Any suggestions would be appreciated, for XSL solutions or VB/DOM solutions.
        >
        > Regards,
        >
        > Anders
        >
        >
        > To unsubscribe from this group, send an email to:
        > XSL-FO-unsubscribe@egroups.com
        >
        >
        >
        > Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
        >
        >
      • G. Ken Holman
        ... To use XSLT to emit the plain text file representing the nodes, we have a free resource called SHOWTREE (follow the Resource library link at the top of
        Message 3 of 4 , Mar 1, 2002
          At 2002-03-01 08:10 -0800, Paul Tyson wrote:
          >In either case, you could use XSLT to emit a plain text file representing
          >the nodes and their relationships, then call the graph layout program to
          >produce a graphic file.
          >
          >--Paul
          >
          >----- Original Message -----
          >From: "Anders Svensson" <asn@...>
          >To: <XSL-FO@yahoogroups.com>
          >Sent: Friday, March 01, 2002 7:18 AM
          >Subject: [XSL-FO] xml tree representation
          >
          >
          > > Hi,
          > >
          > > I'm looking for a way to create a graph/tree representation of an xml
          > document,

          To use XSLT to emit the plain text file representing the nodes, we have a
          free resource called SHOWTREE (follow the "Resource library" link at the
          top of our home page noted below; it is the third entry in the library).

          I hope this helps.

          ............. Ken

          X:\samp>type partlist.xml
          <?xml version="1.0"?>
          <!--start-->
          <part-list bin="78"><part nbr="A123">bolt</part>
          <part nbr="B456">washer</part><warn type="refill"/>
          <!--end of parts--><?cursor blink under?>
          </part-list>

          X:\samp>saxon partlist.xml z:\data\kendata\dev\showtree\showtree.xsl
          SHOWTREE Stylesheet
          Processor: SAXON 6.5 from Michael Kay
          1 Comment: {start}
          2 Element 'part-list':
          2.A Attribute 'bin': {78}
          2.1 Element 'part' (part-list):
          2.1.A Attribute 'nbr': {A123}
          2.1.1 Text (part-list,part): {bolt}
          2.2 Text (part-list): {
          }
          2.3 Element 'part' (part-list):
          2.3.A Attribute 'nbr': {B456}
          2.3.1 Text (part-list,part): {washer}
          2.4 Element 'warn' (part-list):
          2.4.A Attribute 'type': {refill}
          2.5 Text (part-list): {
          }
          2.6 Comment (part-list): {end of parts}
          2.7 Proc. Inst. 'cursor' (part-list): {blink under}
          2.8 Text (part-list): {
          }
          X:\samp>


          --
          Upcoming: 3-days XSLT/XPath and/or 2-days XSLFO: June 17-21, 2002
          - : 3-days XML Information Modeling: July 31-August 2, 2002

          G. Ken Holman mailto:gkholman@...
          Crane Softwrights Ltd. http://www.CraneSoftwrights.com/f/
          Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (Fax:-0995)
          ISBN 0-13-065196-6 Definitive XSLT & XPath
          ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath
          ISBN 1-894049-07-1 Practical Formatting Using XSLFO
          XSL/XML/DSSSL/SGML/OmniMark services, books(electronic, printed),
          articles, training(instructor-live,Internet-live,web/CD,licensed)
          Next public training: 2002-03-01,04,05,06,11,15,04-08,09,10,11,
          - 05-06,07,09,10,20,06-04,07,10,11,13,14,17,20,07-31
        • Anders Svensson
          Maybe someone would be able to figure this problem out if they saw the source code (very simple experimenting code) from VB. This takes the XML input and tries
          Message 4 of 4 , Mar 1, 2002
            Maybe someone would be able to figure this problem out if they saw the source code (very simple experimenting code) from VB. This takes the XML input and tries to plot the elements out in the picture box. If I had gotten this right I had planned to go on to drawing lines in the tree, but I never got that far.. As it is, it plots elements out, but incorrectly. Here goes - any help appreciated as always:


            Sub DrawTree()

            LoadXML

            End Sub

            Function Draw(node)
            Dim xPos
            Dim yPos
            xPos = 130
            yPos = 20
            frmDrawTree.Picture1.Print node
            ' frmDrawTree.Picture1.Line (xPos + 2, yPos + 15)-(xPos - 10, yPos + 50), RGB(0, 0, 0)
            End Function

            Sub LoadXML()

            Dim xmlDoc As MSXML2.DOMDocument
            Set xmlDoc = New MSXML2.DOMDocument
            xmlDoc.LoadXML ("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>")
            Call tree_walk(xmlDoc, 160, 20)
            End Sub

            Function WalkTree(node)
            Dim xnode As MSXML2.DOMDocument
            Set xnode = node

            If xnode.hasChildNodes Then
            For Each child In xnode.childNodes
            Call Draw(xnode.firstChild)
            Next

            End Function

            Function tree_walk(node, prevNodeSpace, ySpace)

            Dim nodeName
            Dim child
            Dim i
            Dim spaceVar
            Dim tempNodeSpace


            tempNodeSpace = prevNodeSpace


            For Each child In node.childNodes
            frmDrawTree.Picture1.CurrentX = prevNodeSpace
            frmDrawTree.Picture1.CurrentY = ySpace
            Call Draw(node.childNodes(i).nodeName)

            prevNodeSpace = prevNodeSpace * 3
            Next

            prevNodeSpace = tempNodeSpace


            For Each child In node.childNodes
            If child.hasChildNodes Then
            prevNodeSpace = prevNodeSpace / 2
            ySpace = ySpace + 20
            prevNodeSpace = prevNodeSpace
            Call tree_walk(child, prevNodeSpace, ySpace)

            End If
            Next

            End Function


            Best,

            Anders


            -----Original Message-----
            From: G. Ken Holman [mailto:gkholman@...]
            Sent: den 1 mars 2002 17:22
            To: XSL-FO@yahoogroups.com
            Subject: Re: [XSL-FO] xml tree representation


            At 2002-03-01 08:10 -0800, Paul Tyson wrote:
            >In either case, you could use XSLT to emit a plain text file representing
            >the nodes and their relationships, then call the graph layout program to
            >produce a graphic file.
            >
            >--Paul
            >
            >----- Original Message -----
            >From: "Anders Svensson" <asn@...>
            >To: <XSL-FO@yahoogroups.com>
            >Sent: Friday, March 01, 2002 7:18 AM
            >Subject: [XSL-FO] xml tree representation
            >
            >
            > > Hi,
            > >
            > > I'm looking for a way to create a graph/tree representation of an xml
            > document,

            To use XSLT to emit the plain text file representing the nodes, we have a
            free resource called SHOWTREE (follow the "Resource library" link at the
            top of our home page noted below; it is the third entry in the library).

            I hope this helps.

            ............. Ken

            X:\samp>type partlist.xml
            <?xml version="1.0"?>
            <!--start-->
            <part-list bin="78"><part nbr="A123">bolt</part>
            <part nbr="B456">washer</part><warn type="refill"/>
            <!--end of parts--><?cursor blink under?>
            </part-list>

            X:\samp>saxon partlist.xml z:\data\kendata\dev\showtree\showtree.xsl
            SHOWTREE Stylesheet
            Processor: SAXON 6.5 from Michael Kay
            1 Comment: {start}
            2 Element 'part-list':
            2.A Attribute 'bin': {78}
            2.1 Element 'part' (part-list):
            2.1.A Attribute 'nbr': {A123}
            2.1.1 Text (part-list,part): {bolt}
            2.2 Text (part-list): {
            }
            2.3 Element 'part' (part-list):
            2.3.A Attribute 'nbr': {B456}
            2.3.1 Text (part-list,part): {washer}
            2.4 Element 'warn' (part-list):
            2.4.A Attribute 'type': {refill}
            2.5 Text (part-list): {
            }
            2.6 Comment (part-list): {end of parts}
            2.7 Proc. Inst. 'cursor' (part-list): {blink under}
            2.8 Text (part-list): {
            }
            X:\samp>


            --
            Upcoming: 3-days XSLT/XPath and/or 2-days XSLFO: June 17-21, 2002
            - : 3-days XML Information Modeling: July 31-August 2, 2002

            G. Ken Holman mailto:gkholman@...
            Crane Softwrights Ltd. http://www.CraneSoftwrights.com/f/
            Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (Fax:-0995)
            ISBN 0-13-065196-6 Definitive XSLT & XPath
            ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath
            ISBN 1-894049-07-1 Practical Formatting Using XSLFO
            XSL/XML/DSSSL/SGML/OmniMark services, books(electronic, printed),
            articles, training(instructor-live,Internet-live,web/CD,licensed)
            Next public training: 2002-03-01,04,05,06,11,15,04-08,09,10,11,
            - 05-06,07,09,10,20,06-04,07,10,11,13,14,17,20,07-31



            To unsubscribe from this group, send an email to:
            XSL-FO-unsubscribe@egroups.com



            Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
          Your message has been successfully submitted and would be delivered to recipients shortly.