[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[268] regexRule適用タイミングを前に。(Re: [sdocusersj 239] Re: sdoc2mgp)



河原@九州です。

----- Original Message -----
From: ASAMI Tomoharu <dp8t-asm@asahi-net.or.jp>
To: <sdocusersj@ml.asahi-net.or.jp>
Sent: Friday, November 17, 2000 7:15 AM
Subject: [sdocusersj 239] Re: sdoc2mgp


>  浅海です。
>
> Hiroshi MIURA <miura@samba.gr.jp> writes:
> > > sdoc -format:xslt test.sdoc -xslt.xsl:sdoc2mgp.xsl \
> > > -xslt.regexRule.data:config.xml -xslt.regexRule.xsl:config2rule.xsl
> > > みたいなオプションがあると便利でしょうか?
> > 今回の場合は、たしかにそのようにできると、便利だろうと言う気がします。
> > ただこういった拡張のようなものは、複雑さを増して結果として理解しにくい
> > ものにならないか、不安です。
> > ほかのXSLTによる応用の場面でも、共通に同様の機能が活用可能だということで
> > あれば、導入した方がいいのかもしれません。
>
>  そうですね。このあたりのバランスは難しいと思います。
>  この機能に関しては、気が向いたら入れておく、ぐらいにしておきます。

# 自分が正規表現機能がほしいと1番に言い出してまたこんなことを
# 書くのもなんなのですが、

このregexRuleをsdoc2manページの
特定の文字のエスケープ処理に使ってみたのですが、
XSL変換後のテキストに対して正規表現が適用されますよね。
そうすると、XSLファイルに置換対象が
入っている場合、"プレ-エスケープ"する必要が出ます。
例:
[rule.xml]
<rule>
   <pattern>\\</pattern>
   <replace>\e</replace>
</rule>

という正規表現による変換の元で

[sdoc2man.xsl]
<xsl:text>\</xsl:text>

を(正規表現に引っかからずに)出力したいとすると

[rule.xml]
<rule>
   <pattern>\\</pattern>
   <replace>\e</replace>
</rule>
<rule>
   <pattern>@backslash@</pattern>
   <replace>\</replace>
</rule>

[sdoc2man.xsl]
<xsl:text>@backslash@</xsl:text>

みたいなことになります。もし可能ならば(^ ^;;、XSL変換の前に
regexRuleを適用できるとXSLファイルの可読性が上がると
思います。でもあんまり重要度は高くないのでとりあえず
"プレ-エスケープ"で対応しようと思っています。

# もし、必要だと認められて私がSmartDocのソースを読める
# ようになったら自分で作るのですが、やっぱりデザインパターンとか
# 勉強しないとだめかな??

////////////////////////////////////////
// 河原 亮@九/理/物
//