2010-08-04 106 views
1

如何在XSLT中處理除數字以外的項目符號樣式。我想繪製一張表格(XAML flowdocument)並將行放在下面。層次縮進和特殊的標記風格。不在(XAML)FlowDocument中使用。xslt列表標記樣式

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> 

回答

0

看看<xsl:number.../>指令。它有格式化數字的參數,其中包含字母和羅馬數字。它在XSLT1和XSLT2中都可用。

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