gpt4 book ai didi

xml - XSLT FO 列表元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:29 26 4
gpt4 key购买 nike

我的源 XML 看起来像:

<events>
<entry>
<event>Event 1</event>
<event>Event 2</event>
<event>Event 3</event>
<event>Event 4</event>
</entry>
</events>

下面是我的XSL转换对应的代码:

<fo:block-container>
<fo:list-block>
<xsl:for-each select="//event">
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>
<xsl:value-of select="//event"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:for-each>
</fo:list-block>
</fo:block-container>

和 FO 输出:

<fo:list-block>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 1Event 2Event 3Event 4</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 1Event 2Event 3Event 4</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 1Event 2Event 3Event 4</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 1Event 2Event 3Event 4</fo:block>
</fo:list-item-body>
</fo:list-item>

我的问题是每个事件元素都应该转换成一个单独的 fo:list-item,比如:

<fo:list-block>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 1</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 2</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 3</fo:block>
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>Event 4</fo:block>
</fo:list-item-body>
</fo:list-item>

我希望你能帮助我...

最佳答案

代替

<xsl:value-of select="//event"/>

使用

<xsl:value-of select="."/>

你想输出当前事件,毕竟不是全部。


更笼统地说,我建议将您的 XSLT 程序从 <xsl:for-each> 改为走向<xsl:template>/<xsl:apply-templates>基于形式:

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

<xsl:template match="events/entry">
<fo:list-block>
<xsl:apply-templates />
<fo:list-block>
</xsl:template>

<xsl:template match="events/entry/event">
<fo:list-item>
<fo:list-item-label/>
<fo:list-item-body>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>

这种方法更加模块化,具有更好的可重用性,并且总体上没有那么深的嵌套。

关于xml - XSLT FO 列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32166538/

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