以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]xsl-fo 输出 XML文档中的<br>  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=76571)


--  作者:direktor
--  发布时间:9/2/2009 1:42:00 AM

--  [求助]xsl-fo 输出 XML文档中的<br>
现有手中XML文档,片段如下:

<FormattedText>
   <p>
     Orientabteilung des Deutschen Archäologischen Instituts
     <br />
     Institut für Baugeschichte der Universität Karlsruhe
     <br />
     Institut für Klassische Archäologie der Universität Tübingen
    <br />
     Institut für Vorderasiatische Archäologie und Philologie der Universität Tübingen
    <br />
     Institut für Klassische Archäologie der Humboldt-Universität Berlin
  </p>
</FormattedText>


想通过XSL-FO 输出 如下结果:

     Orientabteilung des Deutschen Archäologischen Instituts
     Institut für Baugeschichte der Universität Karlsruhe
     Institut für Klassische Archäologie der Universität Tübingen
     Institut für Vorderasiatische Archäologie und Philologie der Universität Tübingen
     Institut für Klassische Archäologie der Humboldt-Universität Berlin


求助各位, 谢谢!


--  作者:hexun831012
--  发布时间:9/2/2009 3:18:00 PM

--  
身为本版版主,很惭愧不会XSL-FO
你试试看
<xsl:template match="p">
  <xsl:apply-templates />
</xsl:template>
<xsl:template match="br"> </xsl:template>
--  作者:direktor
--  发布时间:9/7/2009 11:46:00 PM

--  
可能是表述不太准确,我是想用Apache的 FOP 输出XML文档中的信息,,最后输出PDF文档。

如果用下面的方法,得到的结果不好看(因为该换行的时候没有换行),

......
<xsl:if test="child::FormattedText">
   <fo:block text-align="justify" keep-with-next.within-page="always">
       <xsl:value-of select="."/>
   </fo:block>
</xsl:if>


--  作者:direktor
--  发布时间:9/7/2009 11:47:00 PM

--  
期待版主回复……
--  作者:hexun831012
--  发布时间:9/8/2009 7:37:00 AM

--  
如果原始文档是HTML格式的,那么就加一个模版把BR转换成ASCII回车,比如
<xsl:if test="child::FormattedText">
   <fo:block text-align="justify" keep-with-next.within-page="always">
       <xsl:apply-templates />
   </fo:block>
</xsl:if>
<xsl:template match="br"> </xsl:template>
--  作者:direktor
--  发布时间:9/8/2009 5:29:00 PM

--  
试过了,还是不行;

原文件就是XML格式,,里面就是文档树的结构, 大概如下:

<?xml version="1.0" encoding="UTF-8"?>
<projects>
  <project>
    <id  />
    <name />
    <FormattedText>
      <p>
         asdf <br/>  rty<br/> ghjkk
      </p>
    </FormattedText>
  </project>
  <project>
    .....
  </project>
</projects>


--  作者:hexun831012
--  发布时间:9/8/2009 7:08:00 PM

--  
<xsl:if test="child::FormattedText">
   <fo:block text-align="justify" keep-with-next.within-page="always">
       <xsl:apply-templates />
   </fo:block>
</xsl:if>
<xsl:template match="p">
  <xsl:apply-templates />
</xsl:template>
<xsl:template match="br"> </xsl:template>
--  作者:direktor
--  发布时间:9/9/2009 4:41:00 AM

--  
用这个解决了:

<fo:block linefeed-treatment="preserve">
   <xsl:value-of select="."/>                          
</fo:block>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms