如何对嵌套的无序列表使用破折号?

mka*_*man 1 dita dita-ot

问题:我想将所有嵌套的无序列表切换为破折号而不是子弹.

我相信选择这些嵌套列表项的XPath表达式是:// ul/li/ul // li

我相信这是适合修改的模板:

<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>
Run Code Online (Sandbox Code Playgroud)

它引用了名为"Unordered List Bullet"的en.xml中的变量:

<variable id="Unordered List bullet">&#x2022;</variable>
Run Code Online (Sandbox Code Playgroud)

我已经尝试将该变量调用包装为引用另一个变量"Unordered List Dash"(如果它是嵌套的).我还是有点挂了.什么是最优雅的方法?我应该为这些嵌套项目设置一个额外的模板吗?

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

这是来自strings文件的变量.<variable id="Unordered List dash">-</variable>