gpt4 book ai didi

xml - Xslt 到 xsl-fo 的转换

转载 作者:数据小太阳 更新时间:2023-10-29 01:51:08 27 4
gpt4 key购买 nike

我想对 xsl-fo 进行 xslt 转换,但我不确定我能否做到这一点。我尝试将 XML 列表转换为 xsl-fo 列表。任何人都可以告诉我在哪里可以找到我谷歌搜索了很长时间没有很多这样的例子。我的 XML 是这样的。

 <p>TEXT</p>
<ul>
<li>Item1</li>
<li>Item2</li>
</ul>
<p>ANOTHERTEXT</p>

我尝试使用模板进行此转换,但我的模板无法获取 xsl-fo 谁能告诉我模板是否适用于此转换。如果他们工作可以给我一个例子,我找不到任何人。我的目标是得到一个 pdf whit fop

谢谢


这是我的 XML 文档的一部分 我收到了 HTML 源代码的某些部分,我将 HTML 更改为 XML 现在我尝试将 XML(列表)转换为 XSL-FO 和 XSLT。我的问题是我无法将模板应用于此转换。我的最终目标是获得一个带有 FOP 的 pdf。

谢谢

更新

这是我的 XML:

<Memoria>
<name>TITLE</name>
<Index>INDEX 2010</Index>
<Seccion>
<name>INFORMATION</name>
<Contenido>
<p>TEXT</p>
<ul>
<li>ITEM1</li>
<li>ITEM2</li>
</ul>
<p>ANOTHER</p>
</Contenido>
</Seccion>
</Memoria>

我正在测试您的解决方案谢谢大家

最佳答案

如果您的模板无法正常工作,则可能是命名空间问题。您应该使用更准确的 XML 示例更新问题。

这是一个例子。

XML 输入(固定为格式正确的)

<root>
<p>TEXT</p>
<ul>
<li>Item1</li>
<li>Item2</li>
</ul>
<p>ANOTHERTEXT</p>
</root>

XSLT 1.0

<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 indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="/root">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in">
<fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>

<xsl:template match="p">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>

<xsl:template match="ul">
<fo:list-block padding="4pt">
<xsl:apply-templates/>
</fo:list-block>
</xsl:template>

<xsl:template match="li">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>&#x02022;</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
</xsl:stylesheet>

XSL-FO 输出

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in">
<fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<fo:block>TEXT</fo:block>
<fo:list-block padding="4pt">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>•</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>Item1</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>•</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>Item2</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
<fo:block>ANOTHERTEXT</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>

Apache FOP 输出

enter image description here

关于xml - Xslt 到 xsl-fo 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com