xslt列表标记样式

时间:2010-08-04 19:16:28

标签: xslt

如何在XSLT中处理数字以外的项目符号样式。我想绘制一个表(XAML flowdocument)并将行放在下面。分层缩进和特殊标记样式。不使用(XAML)FlowDocument。

1. Some text.........................
    a. Some text.....................
       [1]. Some text................
           a. Some text again........
              [1]. Som text again....

Xml源代码如下。

<Root>
    ...
    <Step>
        <Text>First Level</Text>
    </Step>
    <Step>
        <Text>First Level</Text>
        <Step>
            <Text>Second Level</Text>
            <Step>
                <Text>Third Level</Text>
                <Step>
                    <Text>Fourth Level</Text>
                </Step>
            </Step>
        </Step>
    </Step>
    ...
</Root>

2 个答案:

答案 0 :(得分:0)

查看<xsl:number.../>指令。它有参数来格式化不同风格的数字,包括字母和罗马数字。它在XSLT1和XSLT2中均可用。

答案 1 :(得分:0)

只是为了好玩,这个样式表:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:inc="include">
 <xsl:output method="text"/>
    <xsl:template match="text()"/>
    <xsl:template match="Step">
        <xsl:variable name="level" select="count(ancestor::Step)"/>
        <xsl:value-of select="substring('&#x9;&#x9;&#x9;&#x9;',1,$level)"/>
        <xsl:number format="{concat(
                             substring('[',
                                       1,
                                       $level and $level mod 2 = 0),
                             substring('1a',
                                       $level mod 2 + 1,
                                       1),
                             substring(']',
                                       1,
                                       $level and $level mod 2 = 0))}. "/>
        <xsl:value-of select="concat(Text,'&#xA;')"/>
        <xsl:apply-templates select="Step"/>
    </xsl:template>
</xsl:stylesheet>

输出:

1. First Level
2. First Level
    a. Second Level
        [1]. Third Level
            a. Fourth Level