XSL-FO試行錯誤 原稿XMLで括弧類をマークアップで表現するメリット

何らかの変換によってXMLを得る場合や、スキーマにとくに定められていない場合、括弧類は通常の文字として記述されることが多いでしょう。

括弧を通常のテキストで記述する
である(ただし、Bの場合を除く)。

マークアップとして、括弧を表すタグを用意し、使用したとき、どのようなメリットがあるかについて考えてみました。

である<kakko>ただし、Bの場合を除く</kakko>。

<kakko>は多くの場合良いタグ名ではないでしょうが、目をつむることにします。

テキストとしての括弧ではなくタグを使ったとき、<kakko>をXSLTで処理するのは簡単です。

<xsl:template match="kakko"><xsl:text>「</xsl:text><xsl:apply-templates />」</xsl:text>
</xsl:template>

(テキストとしての括弧を検出したい場合、XSLT 2.0以降では正規表現で対応可能です。)

タグkakkoをどんなテキストで表すかの決定を、XSLTで変換するまで遅延できます。
また、XSL-FOで組版するとき、行頭、行末禁則の適用外のテキストでも疑似的に禁則があるように振る舞わせることができます。「\if」「\fi」を括弧の代替にしてみましょう。

<fo:inline keep-together.within-line="always"
keep-with-next.within-line="always"
>\if</fo:inline><fo:inline>ただし、Bの場合を除く</fo:inline><fo:inline 
keep-together.within-line="always"
keep-with-previous.within-line="always"
>/fi</fo:inline>
keep-*による分割防止

それぞれ直前、直後の文字で分割できそうな場合でも、くっついて処理されていますね。
@keep-*については次のページをご覧ください。
第6章 プロパティ値の書き方 『XSL-FOの基礎 第2版 – XMLを組版するためのレイアウト仕様』

デメリットとしては、禁則制御そのものではないため別の分割規則との都合で目的と異なる挙動とるかもしれないこと、原稿から抽出したテキストを機械翻訳に渡すときにうまく調整する作業が発生するかもしれないことなどが挙げられます。