【问题标题】:XSL-FO | FO: Tags are being removedXSL-FO | FO:标签正在被删除
【发布时间】:2017-01-06 20:06:20
【问题描述】:

我目前正在将 XSL 用于工作项目,但遇到了一个问题。

我正在尝试读取如下所示数据库的值:

<fo:block font-weight='bold>hello</fo:block>

似乎 XSL 正在剥离 &lt;fo:block&gt; 元素,因为它只给我文本(我只看到 Hello,而不是粗体,而且它的行为不像块元素)。我觉得,不知何故,XSL 将从数据库读取的值解释为字符串,并去除 &lt;fo&gt; 标记,只留下文本。

知道可以做些什么来保留我的样式吗?

(显然这个例子已经简化了,要显示的文本比那个长)

编辑:自我回答以供将来参考

【问题讨论】:

  • 您使用什么技术来编译.fo 文件?在处理器创建输出之前,您是否有权访问该文件?
  • 另外,您是否将前缀fo 绑定到XSL-FO?仔细检查一下,您的问题听起来完全像 FO 处理器因为错误的命名空间而忽略它。
  • @Boldewyn 是的,它是前缀,我的模板的其余部分是使用fo 编写的,只有从数据库读取的部分似乎是一个问题
  • @Boldewyn 是的,我可以访问那个 .fo 文件,我们会检查一切是否正常。有什么想法吗?
  • 你能展示一下 XSLT 吗?听起来您正在使用 xsl:value-of 而不是 xsl:copy-ofxsl:apply-templates 没有匹配的模板来复制元素。

标签: xslt xsl-fo


【解决方案1】:

根据您想要将 &lt;xsl:value-of select='/fulfill-list/ticket-list/list-item/eventTicketConte‌​nt/xmlTicketContent/‌​ticketdescription'/&gt; 更改为 &lt;xsl:copy-of select='/fulfill-list/ticket-list/list-item/eventTicketConte‌​nt/xmlTicketContent/‌​ticketdescription'/&gt;(或者可能是 &lt;xsl:copy-of select='/fulfill-list/ticket-list/list-item/eventTicketConte‌​nt/xmlTicketContent/‌​ticketdescription/node()'/&gt;)的 cmets。

【讨论】:

    【解决方案2】:

    首先,我想感谢大家花时间回答我。我很高兴看到 SO 社区如此强大。

    我已经通过这种方式解决了我的问题:

     <xsl:for-each select="/fulfill-list/ticket-list/list-item/eventTicketContent/xmlTicketContent/ticketdescription/node()">
          <xsl:copy-of select="child::node()" />
        </xsl:for-each>
    

    我真的不知道幕后发生了什么以及为什么删除了&lt;fo&gt; 标签,但确实如此。遍历所有这些并使用 &lt;xsl:copy-of&gt; 就可以了。

    再次感谢你们!

    【讨论】:

    • for-each 不需要嵌套copy-of,你也可以直接使用单个&lt;xsl:copy-of select="/fulfill-list/ticket-list/list-item/eventTicketContent/xmlTicketContent/ticketdescription/*/node()" /&gt;
    猜你喜欢
    • 1970-01-01
    • 2013-10-13
    • 2021-04-24
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2013-04-06
    相关资源
    最近更新 更多