XSL FO 2 блока в одном ряду без таблицы - PullRequest
0 голосов
/ 19 октября 2018

Здравствуйте, какая-либо подсказка, чтобы выровнять заголовок с текстом ОПЦИИ без использования таблицы?

<xsl:choose>
                <xsl:when test="@product='OPTION'">
                <fo:block-container keep-together.within-line="always"> 
                    <fo:block>  
                        <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
                    </fo:block>
                    <fo:block xsl:use-attribute-sets="title__option">   
                        <xsl:text>OPTION&#160;</xsl:text>
                            <xsl:text>&#160;</xsl:text>
                    </fo:block> 
                </fo:block-container>   
                </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
            </xsl:otherwise>
        </xsl:choose>

Спасибо, ура

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Спасибо за ваш ответ.

Я на самом деле пытаюсь поместить "метку" OPTION рядом с заголовком, используя наборы атрибутов для создания цвета фона для текста OPTION

3неудачные пути:

Ошибка сгенерированных блоков списка: FOPException: можно проверять только ненулевые позиции с индексом

<xsl:choose>
        <xsl:when test="@product='OPTION'">
            <fo:list-block>
                <fo:list-item>
                    <fo:list-item-label>
                        <fo:block xsl:use-attribute-sets="title__option">
                            <xsl:text>OPTION&#160;</xsl:text>
                        </fo:block>
                    </fo:list-item-label>
                    <fo:list-item-body>
                        <fo:block>
                            <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
                        </fo:block>
                    </fo:list-item-body>
                </fo:list-item>
            </fo:list-block>
        </xsl:when>
        <xsl:otherwise>
            <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
        </xsl:otherwise>
    </xsl:choose>

Float генерирует ошибку: [fop] [ERROR] Нет LayoutManager makerдля класса org.apache.fop.fo.flow.Float и текст OPTION не отображается

<xsl:choose>
        <xsl:when test="@product='OPTION'">
            <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
            <fo:float float="right"> 
                <fo:block xsl:use-attribute-sets="title__option">
                    <xsl:text>OPTION&#160;</xsl:text>
                </fo:block>
            </fo:float> 
        </xsl:when>
        <xsl:otherwise>
            <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
        </xsl:otherwise>
    </xsl:choose>

Встроенный контейнер не выдает ошибку, но абзац игнорируется и не отображается

<xsl:choose>
            <xsl:when test="@product='OPTION'">
                <fo:inline-container>
                    <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
                    <fo:block xsl:use-attribute-sets="title__option">
                        <xsl:text>OPTION&#160;</xsl:text>
                    </fo:block>
                </fo:inline-container>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates select="*[contains(@class, ' topic/title ')]"/>
            </xsl:otherwise>
        </xsl:choose>
0 голосов
/ 20 октября 2018

Мне не ясно, что вы пытаетесь сделать, но вы могли бы:

  • Поместить текст "OPTION" в fo:float и переместить его в сторону
  • Используйте fo:list-block и т. Д. И используйте «OPTION» fo:block в fo:list-item-label
  • Используйте fo:inline-container для одного или обоих блоков
  • Если заголовок никогда не идетчтобы сделать две строки, используйте fo:leader, чтобы отделить два фрагмента текста
  • Если вы используете AH Formatter, введите «OPTION» в fo:change-bar-begin (см. https://www.antennahouse.com/product/ahf66/ahf-ext.html#fo.change-bar-begin)

Часть моего замешательства в том, что после текста «OPTION» у вас есть неразрывные пробелы.

...