棘手的嵌套列表XSLT

时间:2015-09-26 00:13:22

标签: xml xslt

我是XSLT的新手,对格式化列表有点困惑。基本上我需要我的XML结构,其中有一部分:

<slideshow>
    <slide id="A1">
        <title>XML techniques</title>
        <paragraph> Slideshow prepresents different kind of <bold>XML</bold> techniques </paragraph>
        <paragraph> Most common XML Techniques are </paragraph>
        <numberedlist>
            <item> Basic XML, DTD (version 1.0) </item>
            <item> XHTML </item>
            <itemizedlist>
                <item> XHTML 1.0 </item>
                <item> XHTML basic </item>
                <numberedlist>
                    <item> for mobile phones </item>
                    <item> basic set for all XHTML documents</item>
                </numberedlist>
            </itemizedlist>
            <item> XML namespace </item>
            <item> XSL </item>
            <itemizedlist>
                <item> XSLT - template based programming language</item>
                <item> XSL-FO - formating output like CSS </item>
            </itemizedlist>

            <item> Programming API (like SAX and DOM) </item>
            <item> XML Schemas </item>
        </numberedlist>
    </slide>
..
</slideshow>

看起来像这样:

  1. 基本XML,DTD(版本1.0)
    • XHTML 1.0
    • XHTML基础知识
      1. 手机
      2. 所有XHTML文档的基本设置
  2. XHTML
  3. XML名称空间
  4. XSL
    • XSLT - 基于模板的编程语言
    • XSL-FO - 格式化输出,如CSS
  5. 编程API(如SAX和DOM)
  6. XML Schemas
  7. 我想尽可能简单地做到这一点,所以我只是使用模板而没有复杂的XPath面具,但似乎没有简单的方法..有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:2)

实际上,这在XSLT中是微不足道的,因为它是递归的processing model

XSLT 1.0

#include <iostream>
#include "sqlite3.h"

<强>结果

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>

<xsl:template match="numberedlist">
    <ol>
        <xsl:apply-templates/>
    </ol>
</xsl:template>

<xsl:template match="itemizedlist">
    <ul>
        <xsl:apply-templates/>
    </ul>
</xsl:template>

<xsl:template match="item">
    <li>
        <xsl:value-of select="." />
    </li>
</xsl:template>

<xsl:template match="text()"/>

</xsl:stylesheet>

<强>呈现

enter image description here