遇到XML中的空标签时添加空格

问题描述 投票:0回答:1

我正在使用 Apache FOP 创建 PDF。

我的 XML 的一部分如下所示。基本上,我试图将标签的全部内容按原样放入 PDF 中,但我在这里遇到了一些挑战。 我希望当有空 TEXT 标签时有一个空格:

"<Text></Text>"

XML:

    <Text>NUMBER             :   123456      ABCDE     -  ASBI</Text>
    <Text>REFERENCENUMBER    : TECNO - ENOS-B</Text>
    <Text></Text>
    <Text>USER   1           : COMPANY XYZ</Text>
    <Text>                     TECH CENTER1</Text>
    <Text>                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X XX</Text>
    <Text>                     0000 XXXXXXXXXXXXXXXXXXXX</Text>
    <Text>USER   2           : COMPANY MNO</Text>
    <Text>                     TECH CENTER2</Text>
    <Text>                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X XX</Text>
    <Text>                     0000 XXXXXXXXXXXXXXXXXXXX</Text>
    <Text></Text>
    <Text>QTY. SUBSCRIPTION PRICE, OPTICAL CAPACITY</Text>

我的代码由节点文本上的 for-each 块组成:

                            <xsl:for-each select="Text">
                            <fo:table-row>
                                <fo:table-cell>
                                    <fo:block font-family="Courier" font-size="7pt" font-weight="normal" display-align="center" white-space="pre">
                                        <xsl:value-of select="."/>
                                    </fo:block>
                                </fo:table-cell>
                            </fo:table-row>
                        </xsl:for-each>

我能够使用 White-space="pre" 来实现标签中的空格。但是我如何得到一个空行呢? 我的输出如下所示:

    NUMBER             :   123456      ABCDE     -  ASBI
    REFERENCENUMBER    : TECNO - ENOS-B 
    USER   1           : COMPANY XYZ
                           TECH CENTER1
                         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X XX
                         0000 XXXXXXXXXXXXXXXXXXXX
    USER   2           : COMPANY MNO
                         TECH CENTER2
                         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X XX
                         0000 XXXXXXXXXXXXXXXXXXXX
    QTY. SUBSCRIPTION PRICE, OPTICAL CAPACITY

预期输出:

    NUMBER             :   123456      ABCDE     -  ASBI
    REFERENCENUMBER    : TECNO - ENOS-B 

    USER   1           : COMPANY XYZ
                           TECH CENTER1
                         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X XX
                         0000 XXXXXXXXXXXXXXXXXXXX
    USER   2           : COMPANY MNO
                         TECH CENTER2
                         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX X XX
                         0000 XXXXXXXXXXXXXXXXXXXX

    QTY. SUBSCRIPTION PRICE, OPTICAL CAPACITY
xslt xslt-2.0 apache-fop
1个回答
0
投票

我添加了一张支票,它起作用了:

         <xsl:for-each select="Text">
                            <fo:table-row >
                                <fo:table-cell>
                                    <fo:block font-family="Courier" font-size="7pt" font-weight="normal" display-align="center" white-space="pre">
                                        <xsl:value-of select="."/>
                                    <xsl:if test="string-length(.) = 0">
                                    <xsl:text> </xsl:text>
                                    </xsl:if>
                                    </fo:block>
                                </fo:table-cell>
                            </fo:table-row>
                        </xsl:for-each>
© www.soinside.com 2019 - 2024. All rights reserved.