Entry
XML: XSL: Tree:Create:Simple: How to create general tree in XML: 1 parent, 1 child? [table HTML]
Sep 7th, 2003 07:42
Knud van Eeden,
----------------------------------------------------------------------
--- Knud van Eeden --- 07 September 2003 - 03:29 pm ------------------
XML: XSL: Tree:Create:Simple: How to create general tree in XML: 1
parent, 1 child? [table HTML]
Steps: Overview:
1. -The general structure of the tree is:
'/'
|
+-element1
| |
| +-------element11
|
+-element1
| |
| +-------element11
|
|
+-element1
| |
| +-------element11
|
+-element1
| |
| +-------element11
|
+-element1
| |
| +-------element11
|
...
|
+-element1
|
+-------element11
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>
</element11>
<element11>
<element111>
information2
</element111>
</element11>
</element1>
3. -Create a DTD file:
<!ELEMENT element1 (element11+)>
<!ELEMENT element11 (element111)>
<!ELEMENT element111 (#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:stylesheet>
4.1.1 -The HTML result shown in a browser is:
Overview elements
element11 =
element111 = information1
element11 =
element111 = information2
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>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
4.2.1 -The HTML result shown in a browser is:
Overview elements
element11 =
element111 = information1
element11 =
element111 = information2
---
Note: a table is a special case of a tree
as the table:
+-----+--------+
| row | column |
+-----+--------+
| row | column |
+-----+--------+
| row | column |
+-----+--------+
| row | column |
+-----+--------+
| row | column |
+-----+--------+
is represented as a tree as:
'/'
|
+-row
| |
| +-------column
|
+-row
| |
| +-------column
|
|
+-row
| |
| +-------column
|
+-row
| |
| +-------column
|
+-row
| |
| +-------column
|
...
|
+-row
|
+-------column
---
Internet: see also:
http://www.faqts.com/knowledge_base/view.phtml/aid/24207/fid/671
-----------------------------------------------------------------------