Entry
XML: XSL: Tree:Create:Simple: How to create general tree in XML: 1 parent, 4 children? [table HTML]
Sep 7th, 2003 07:43
Knud van Eeden,
----------------------------------------------------------------------
--- Knud van Eeden --- 07 September 2003 - 04:02 pm ------------------
XML: XSL: Tree:Create:Simple: How to create general tree in XML: 1
parent, 4 children? [table HTML / order 3]
Steps: Overview:
1. -The general structure of the tree is:
'/'
|
+-element1
| |
| +-------element11
| |
| +-------element12
| |
| +-------element13
| |
| +-------element14
|
+-element1
| |
| +-------element11
| |
| +-------element12
| |
| +-------element13
| |
| +-------element14
|
+-element1
| |
| +-------element11
| |
| +-------element12
| |
| +-------element13
| |
| +-------element14
|
+-element1
| |
| +-------element11
| |
| +-------element12
| |
| +-------element13
| |
| +-------element14
|
+-element1
| |
| +-------element11
| |
| +-------element12
| |
| +-------element13
| |
| +-------element14
|
...
|
+-element1
|
+-------element11
|
+-------element12
|
+-------element13
|
+-------element14
2. -Create an XML file:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MYBOOKS SYSTEM "array.dtd">
<?xml-stylesheet type="text/xsl" href="array.xsl"?>
<!-- library: (filenamemacro=array.xml) -->
<element1>
<element11>
<element111>
information1
</element111>
<element112>
information2
</element112>
<element113>
information3
</element113>
<element114>
information4
</element114>
</element11>
<element11>
<element111>
information5
</element111>
<element112>
information6
</element112>
<element113>
information7
</element113>
<element114>
information8
</element114>
</element11>
</element1>
3. -Create a DTD file:
<!ELEMENT element1 (element11+)>
<!ELEMENT element11 (element111,element112,element113,element114)
>
<!ELEMENT element111 (#PCDATA)>
<!ELEMENT element112 (#PCDATA)>
<!ELEMENT element113 (#PCDATA)>
<!ELEMENT element114 (#PCDATA)>
4.1 -Create an XSL file: recursive solution using 'apply-templates'
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!-- recursive solution: using 'apply-templates' -->
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="element1">
<HTML>
<HEAD>
<TITLE>
My elements
</TITLE>
</HEAD>
<BODY>
<BR/> Overview elements
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="element11">
<BR/> element11 =
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="element111">
<BR/> element111 =
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="element112">
<BR/> element112 =
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="element113">
<BR/> element113 =
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="element114">
<BR/> element114 =
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
4.1.1 -The HTML result shown in a browser is:
Overview elements
element11 =
element111 = information1
element112 = information2
element113 = information3
element114 = information4
element11 =
element111 = information5
element112 = information6
element113 = information7
element114 = information8
4.2 -Create an XSL file: iterative solution using 'for-each'
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!-- iterative solution: using 'for-each' -->
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="element1">
<HTML>
<HEAD>
<TITLE>
My elements
</TITLE>
</HEAD>
<BODY>
<BR/> Overview elements
<xsl:for-each select="element11">
<BR/> element11 =
<xsl:for-each match="element111">
<BR/> element111 =
<xsl:value-of select="."/>
</xsl:for-each>
<xsl:for-each match="element112">
<BR/> element112 =
<xsl:value-of select="."/>
</xsl:for-each>
<xsl:for-each match="element113">
<BR/> element113 =
<xsl:value-of select="."/>
</xsl:for-each>
<xsl:for-each match="element114">
<BR/> element114 =
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
4.2.1 -The HTML result shown in a browser is:
Overview elements
element11 =
element111 = information1
element111 = information2
element111 = information3
element111 = information4
element112 = information1
element112 = information2
element112 = information3
element112 = information4
element113 = information1
element113 = information2
element113 = information3
element113 = information4
element114 = information1
element114 = information2
element114 = information3
element114 = information4
element11 =
element111 = information5
element111 = information6
element111 = information7
element111 = information8
element112 = information5
element112 = information6
element112 = information7
element112 = information8
element113 = information5
element113 = information6
element113 = information7
element113 = information8
element114 = information5
element114 = information6
element114 = information7
element114 = information8
---
Note: this iterative result, using the XSL is not what I expected,
as it also shows information belonging to
element111, element111, element113, element114
respectively in the other elements.
I should correct this later.
Use e.g. for the moment the recursive XSL solution, as that one
works correct.
---
Note: a table is a special case of a tree
as the table:
+-----+---------+---------+---------+---------+
| row | column1 | column2 | column3 | column4 |
+-----+---------+---------+---------+---------+
| row | column1 | column2 | column3 | column4 |
+-----+---------+---------+---------+---------+
| row | column1 | column2 | column3 | column4 |
+-----+---------+---------+---------+---------+
| row | column1 | column2 | column3 | column4 |
+-----+---------+---------+---------+---------+
| row | column1 | column2 | column3 | column4 |
+-----+---------+---------+---------+---------+
is represented as a tree as:
'/'
|
+-row
| |
| +-------column1
| |
| +-------column2
| |
| +-------column3
| |
| +-------column4
|
+-row
| |
| +-------column1
| |
| +-------column2
| |
| +-------column3
| |
| +-------column4
|
+-row
| |
| +-------column1
| |
| +-------column2
| |
| +-------column3
| |
| +-------column4
|
+-row
| |
| +-------column1
| |
| +-------column2
| |
| +-------column3
| |
| +-------column4
|
+-row
| |
| +-------column1
| |
| +-------column2
| |
| +-------column3
| |
| +-------column4
|
...
|
+-row
|
+-------column1
|
+-------column2
|
+-------column3
|
+-------column4
---
Internet: see also:
http://www.faqts.com/knowledge_base/view.phtml/aid/24207/fid/671
-----------------------------------------------------------------------