Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何使用XSLT将字母垂直居中_Xml_Pdf_Xslt_Xsl Fo_Apache Fop - Fatal编程技术网

Xml 如何使用XSLT将字母垂直居中

Xml 如何使用XSLT将字母垂直居中,xml,pdf,xslt,xsl-fo,apache-fop,Xml,Pdf,Xslt,Xsl Fo,Apache Fop,我正在使用XSLT将XML转换为PDF。我想要的是将一个字母水平和垂直居中,也就是说,它应该在页面的中心。到目前为止我得到的是这个 你可以看到它已经水平居中,但我不知道垂直居中。我尝试了垂直对齐,显示对齐,但没有效果。有什么办法可以实现吗 这是到目前为止我的代码 XML A. XSL 在这种情况下,@display align可用于: fo:区域机构 fo:block包含fo:block的容器 这里有两个例子 [第1种方法] <?xml version="1.0" encodin

我正在使用XSLT将XML转换为PDF。我想要的是将一个字母水平和垂直居中,也就是说,它应该在页面的中心。到目前为止我得到的是这个

你可以看到它已经水平居中,但我不知道垂直居中。我尝试了
垂直对齐
显示对齐
,但没有效果。有什么办法可以实现吗

这是到目前为止我的代码

XML

A.
XSL
在这种情况下,@display align可用于:

  • fo:区域机构
  • fo:block包含fo:block的容器
这里有两个例子

[第1种方法]

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <fo:root>
            <fo:layout-master-set>
                <fo:simple-page-master master-name="A4"
                    page-height="210mm" page-width="297mm">
                    <fo:region-body display-align="center"/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="A4">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block
                        text-align="center" font-size="100mm">
                        <xsl:value-of select="letter"/>
                    </fo:block>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>
</xsl:stylesheet>

[第二种方法]

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <fo:root>
            <fo:layout-master-set>
                <fo:simple-page-master master-name="A4"
                    page-height="210mm" page-width="297mm">
                    <fo:region-body/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="A4">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block-container height="100%" display-align="center">
                        <fo:block
                            text-align="center" font-size="100mm">
                            <xsl:value-of select="letter"/>
                        </fo:block>
                    </fo:block-container>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>
</xsl:stylesheet>

[结果PDF视图]


请注意,FOP仅部分支持
显示对齐
:或者,如果页面上除了一个字母之外还有其他内容,您可能希望将此技术用于范围为页面高度的区域,或者将字符放置在绝对定位块中。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <fo:root>
            <fo:layout-master-set>
                <fo:simple-page-master master-name="A4"
                    page-height="210mm" page-width="297mm">
                    <fo:region-body display-align="center"/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="A4">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block
                        text-align="center" font-size="100mm">
                        <xsl:value-of select="letter"/>
                    </fo:block>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <fo:root>
            <fo:layout-master-set>
                <fo:simple-page-master master-name="A4"
                    page-height="210mm" page-width="297mm">
                    <fo:region-body/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="A4">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block-container height="100%" display-align="center">
                        <fo:block
                            text-align="center" font-size="100mm">
                            <xsl:value-of select="letter"/>
                        </fo:block>
                    </fo:block-container>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>
</xsl:stylesheet>