2013-03-05 36 views
1

問題:我想將所有嵌套的無序列表切換爲破折號而不是項目符號。如何使用短劃線嵌套無序列表?

相信XPath表達式來選擇這些嵌套列表項是:// UL/LI/UL //李

我認爲這是合適的模板修改:

<xsl:template match="*[contains(@class, ' topic/ul ')]/*[contains(@class, ' topic/li ')]"> 
    <fo:list-item xsl:use-attribute-sets="ul.li"> 
     <fo:list-item-label xsl:use-attribute-sets="ul.li__label"> 
      <fo:block xsl:use-attribute-sets="ul.li__label__content"> 
       <fo:inline> 
        <xsl:call-template name="commonattributes"/> 
       </fo:inline> 
       <xsl:call-template name="insertVariable"> 
        <xsl:with-param name="theVariableID" select="'Unordered List bullet'"/> 
       </xsl:call-template> 
      </fo:block> 
     </fo:list-item-label> 

     <fo:list-item-body xsl:use-attribute-sets="ul.li__body"> 
      <fo:block xsl:use-attribute-sets="ul.li__content"> 
       <xsl:apply-templates/> 
      </fo:block> 
     </fo:list-item-body> 

    </fo:list-item> 
</xsl:template> 

它引用命名爲「無序項目符號列表」中en.xml變量:

<variable id="Unordered List bullet">&#x2022;</variable> 

我已經試過包裝變量調用引用另一個變量「無序列表短跑」如果嵌套。我仍然有點掛斷電話。什麼是最優雅的方法?我應該爲這些嵌套物品設置一個額外的模板嗎?

我正在使用DITA-OT 1.5.4。

回答

6

當無序列表是任何其他列表類型(包括任務步驟)的子項時,此列表模板覆蓋使用破折號格式化所有無序列表項,因此您可能需要在xsl:when test屬性中優化XPath表達式。

<xsl:template match="*[contains(@class, ' topic/ul ')]/*[contains(@class, ' topic/li ')]"> 
    <fo:list-item xsl:use-attribute-sets="ul.li"> 
     <fo:list-item-label xsl:use-attribute-sets="ul.li__label"> 
     <fo:block xsl:use-attribute-sets="ul.li__label__content"> 
      <fo:inline> 
      <xsl:call-template name="commonattributes"/> 
      </fo:inline> 
      <xsl:choose> 
      <xsl:when test="ancestor::*[contains(@class, ' topic/li ')]"> 
       <xsl:call-template name="insertVariable"> 
       <xsl:with-param name="theVariableID" select="'Unordered List dash'"/> 
       </xsl:call-template> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:call-template name="insertVariable"> 
       <xsl:with-param name="theVariableID" select="'Unordered List bullet'"/> 
       </xsl:call-template> 
      </xsl:otherwise> 
      </xsl:choose> 
     </fo:block> 
     </fo:list-item-label> 
     <fo:list-item-body xsl:use-attribute-sets="ul.li__body"> 
     <fo:block xsl:use-attribute-sets="ul.li__content"> 
      <xsl:apply-templates/> 
     </fo:block> 
     </fo:list-item-body> 
    </fo:list-item> 
    </xsl:template> 

這裏是字符串文件的變量。 < variable id="Unordered List dash">-</variable>

+0

具有完美意義。謝謝! – mkaatman 2013-03-06 18:02:20