Docbook XML文件前置处理Perl程序,解决回车,空格等等影响FOP排版输出的问题

Docbook的中文问题果然层出不穷,现在都有点后悔采用Docbook格式写论文了,下面一段Perl程序通过删除<book></book>标签下的所有空格,试图解决 FOP中文回车、空格影响排版输出的问题。

不过即使这样,FOP还是会傻傻的把中文标点放在行首,这个问题挺麻烦的,可能是<xsl:param name="hyphenate">false</xsl:param>惹得祸,但是如果启用docbook-xsl又会报Couldn't find hyphenation pattern错……

不管如何,现在起码我不用把<para></para>一段文字写成一行了, Oxygen XML 编辑器只要启用text wrap自动折行就不再同时提供代码折叠功能,而没有代码折叠,又必须采用<!ENTITY preface SYSTEM "preface.xml">来管理长文档,一旦采用,preface.xml就作为实体,做不到实时文件架构验证了,我肯定不愿意放弃Oxygen XML Editor的实时验证文档功能,那就只有采用新的XInclude方法了,但是FOP自带的Xalan 2.7.0 XML XSLT引擎目前 似乎还没开始支持这个XInclude功能……

# !/bin/env perl
use  strict;
use  warnings;
use  utf8;


open (F ,   $ARGV [ 0 ]) or  die   " Can't open file $ARGV[0]: $!\n " ;


my   $in_book   =   0 ;
  

READLINE :
while  ( < F > )
{
  

if  ( $in_book   ==   0 )
  {
      

if ( /< book >/ )
      {
          

$in_book   =   1 ;
      }
      s

# http://www.docbook.org/xml/(.*)/docbookx\.dtd#../docbook-xml-$1/docbookx\.dtd#;
       print   $_ ;
  }
    

else  {
      s
/\ s +// g;
      
print   $_ ;
    }
}




657675.html

丁丁 2007-02-27 04:56 发表评论






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值