Xml 如何使用XSLT将字母垂直居中
我正在使用XSLT将XML转换为PDF。我想要的是将一个字母水平和垂直居中,也就是说,它应该在页面的中心。到目前为止我得到的是这个 你可以看到它已经水平居中,但我不知道垂直居中。我尝试了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
垂直对齐
,显示对齐
,但没有效果。有什么办法可以实现吗
这是到目前为止我的代码
XML
A.
XSL
在这种情况下,@display align可用于:
- fo:区域机构
- fo:block包含fo:block的容器
<?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>