PDFの表形式データをExcelに変換する機能を比較してみる

PDFファイルの中に表形式のデータがあったとき、このデータを加工したり、集計したり、計算したり、あるいは別のアプリケーションに取り込みたいと思うことがあります。少しくらいのデータなら、手入力するという方法でもなんとかなるけれど、量が多いとき、繰り返しが多いときなどは手作業ではなく、なんとか自動的にできないかと思うことでしょう。

いまは、PDFファイルの表からExcel形式に変換するツールは市場にいくつかあります。来週(5月31日)のちょっと一息・アンテナハウスウェビナーでは、PDFファイルの表をExcel形式に変換するツールとして、Adobe のAcrobatと、弊社のPDFtoCellsの次の2つを選んで、変換精度についてがちの比較を行ってみます。

夕陽の対決! PDF-Excel変換ソフト PDFtoCells VS Acrobat
     -真に使えるExcel変換ソフトはどちらか、徹底検証します

2022年5月31日16時から (無料)

詳しい紹介とお申し込みは次のZoomページにてどうぞ。

Zoom でのお申し込みはこちら


速習XSLT超入門1(明日に迫るXSLT超入門2ウェビナー )

ゴールデンウィークも明け、XSLT超入門2のウェビナーが明日に迫りました。

セミナーのようなイベントでは、ナンバリングによって「初回参加してないからどうしよう」と尻込みされてしまう方がいるかもしれません。ということで、第1回をおさらいする記事を用意しました。
「これだけ見ておけば大丈夫」というよりは、書籍におけるあらすじと目次のようなものと考えてください。

導入として「XSLTを活用する自動組版の流れとして、XSLTがどの部分の役割を果たすか」を紹介しています。元の文書にあるコンテンツから目次を生成したりできます。
このウェビナー内では大きく触れていませんが(PDF自動生成超入門の内容なので)、「生成時まで内容が決定できないこと」をオブジェクトとしてレイアウトできるのがXSL-FOとなります。弊社製品Antenna House XSL Formatterによる拡張要素・プロパティも、この視点で眺めてみるとスタイルシート設計に役立つのではないでしょうか。

書籍の完成状態を例にして、抽象的な「構造」について紹介し、それをXMLで表現することについて触れています。

XMLを変換するにあたって、「どの部分を変換するか」という指定が必要になります。XSLTでは、そのためにXPathを使うよ、ということを紹介しています。XPathはXSLTから独立するほど多様な機能がありますが、「XML上の特定位置を指定する」ことは基本といって良いでしょう。そのために「ノード」という形でXML文書を解釈し、ノード間の関係としてXML上の位置を指定できるようにしています。関係の方向性として「軸」があり、不足する指定を補う「述部」がある、という紹介をしています。

より実際的な説明として、弊社の過去記事を紹介しておきます。
XSLTを学ぶ (1) XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う

明日のウェビナーが「基本文法編」ということで、では「XSLTの基本」は何を紹介しているんだ、疑問があるでしょう。ここでは初学者にとって概念的にあまり馴染みがないであろう、XSLTを構築する基本であるxsl:template@matchとxsl:apply-templatesについてを図を用いて紹介しています。文法は比較的資料があるため、図示に注力した形です。後半のデモでトラブルがあった関係でウェビナーと動画で違いが生じてしまっていますが、このmatchとapplyの関係はコインソータに似ている、ということを覚えておくと良いでしょう。

ウェビナーではトラブルのあったデモについては動画を撮り直しています。
デモを通し、xsl:template@matchとxsl:apply-templatesでXML文書を処理していく様子を紹介しています。

全体を通して、「学習開始で環境構築に悩むよりプレイグラウンドなどを利用するのも良い」「業務利用としてXMLエディタは十分ペイする」「変換元のXML文書としてCommonMark文書が難易度として丁度良いのではないか」といった話をしており、「初学者が取り組みやすい形を提示する」をサブテーマとしていました。

明日のウェビナーではこの第1回からの流れを受けて、基本的なコードリーディングによる学習ができる段階まで持っていけるようにすることを目標にしています。ご参加をお待ちしています。


DITA-OTでソースコードを書くならcoderefが便利

DITAでソースコードを書くときはcodeblock要素を使います。

(HTML5では引用ブロックやcodeblock(pre/code)もfigureの子孫として記述する方法がよく見られます。個人的な感覚として、英語だとキャプションに「figure 1」のようにしてソースコードが記載されていても違和感はないのですが、日本語で「図1」となっているところにソースコードが記載されていると違和感があります。)

さて、codeblockの中をどう書くかについて、方針はおおむね次の2つです。

  • 直接書く。XMLの<や>は
    • &lt;のようにして書く
    • xml-mentionドメインのタグを使って書く
  • coderefを使う

今回は記事タイトルにもあるように、coderefを使う方法が便利という話です。

DITA-OTではcodeblockでの処理について、仕様から拡張しています。記事タイトルが「DITAでcodeblockを書くときは~」ではないのはDITAの仕様ではないからです。なお、記事を作成する際に試行した環境はDITA-OT 3.7.1となります。

Extended codeblock processing DITA-OT

拡張内容は幾つかあるのですが、先に述べた通り、今回紹介するのはcoderefについてです。

codeblockにはテキストをそのまま記述することもできますが、XMLタグ、というか<などがきっちり処理されてしまうため、XMLやHTMLをソースコードとして例示するのは結構大変です。そこでcoderefです。

coderefは外部ソースコードを(主にテキストとして)参照し、結果を展開してほしい場合に使うタグです。@hrefで参照する先を指定します。XMLを参照する場合、@format=”xml”を付けましょう。

coderefの第一の利点は<をエスケープしなくて済む点です。これについてはDITA仕様のうちです。

coderefを使ったコードブロック
<codeblock xml:space="preserve"><coderef href="hoge.xml" /></codeblock>

ただ、実際のXMLファイルというのは結構行数が嵩みます。「coderefで参照する用にコード片を別ファイルに保存して……」というのはメインテナンス性からするとあまり歓迎できません。そこでDITA-OTの機能によって行数を制限します。

coderefの拡張記法は#から続くフラグメントによるものです。これに対応していない、DITA-OT以外のDITA処理系で使われても、ファイルの全行が出力されるだけで済みます。……結構大変なので、keyrefで切り出して切り換え可能にしておくのが良いかもしれませんね。

行数の記法はドキュメントにある通り、#line-range(<start>,<stop>)またはRFC 5147の記法で#line=<start><end>のようにして開始行、終了行を指定します。

このままで十分便利ですが、「元のソースコードを弄ったらトピックファイルで指定している行位置も変更しなくてはいけないのだろうか」と疑問を持たれたことでしょう。それはあまりメインテナンス性が良くありませんね。ということで、任意文字列を行位置の識別子にする方法が提供されています。
#token=<start-text>,<end-text>を指定すると、ソースコード中のstart-textがある行の次行からend-textがある行の前行までが範囲として取り出されます。想定としてはコメントアウトした行にstart-text、end-textを書いておく形のようなので、あまりトリッキーなことはしない方が良いでしょう。ほかにも幾つかの機能がDITA-OTのページで紹介されていますが、プラグインや処理系依存の機能もあるようなので都度確かめて使うと良いでしょう。

coderefのstart,end用文字列を追加したXML
<!-- example1start -->
<fo:block><fo:inline>Title</fo:inline></fo:block>
!-- example1end -->

ほか、coderefというcodeblockの中で更に別のタグを使うことのメリットは、@hrefで参照した箇所と、直接書く箇所をcodeblockの中で行える点です。

coderefを使ったコードブロック

<codeblock xml:space="preserve"><coderef href="hoge.xml#line-range(1,5)" />
... <!-- 直接書いた部分 -->
<coderef href="hoge.xml#line-range(10,15)" /></codeblock>

1-5行目、「…」を書いて10-15行目、なんて表示も可能になります。

そんなcoderef、DITA 2.0で若干の変更が入ることが現在のドラフトで言及されています。といってもエンドユーザがトピックを記述する上ではそう変化はなく、主に仕様上の立ち位置がより整理されるということのようです。


(無料)Zoomウェビナー 「PDFの表をExcelに変換し、データを再利用する際の課題」

2022年4月5日(火)16時よりZoomのよるウェビナーを開催します。

タイトルは、
PDFの表をExcelに変換し、データを再利用する際の課題 〜 複数ページ、ページ指定、回転、範囲指定への対処法を実例を用いて解説 〜

として、PDFの中の表をExcelデータに変換するための課題、ツール、テクニックおよび実際の変換例をご紹介します。

どなたでもご参加いただけますので、ご興味をお持ちの方は、次のご案内ページよりお申込みください。


画像をクリックすると、外部サイト(マジセミ)の申込ページに遷移します。


月曜日連載! Microsoft Wordスタイル探索(51)インデント関係コマンド(続き)

前回、インデント関係のコマンドの一覧を作りました。

コマンドの機能を調べて表にしてみました。

コマンド

キーボード・ショートカット

機能

リボン

Indent

Ctrl+M

インデントを増やす

IndentIncreaseWord

IndentChar

インデントを字送り分増やす

IndentFirstChar

字下げインデントを字送り分増やす

IndentFirstLine

字下げインデントを2文字分増やす

IndentLine

インデントを2文字分増やす

IndentSpecialFirstLine

不明

IndentSpecialHanging

不明

IndentSpecialNone

不明

UnIndent

Ctrl+Shift+M

インデントを減らす

IndentDecreaseWord

UnIndentChar

インデントを字送り分減らす

UnIndentFirstChar

字下げインデントを字送り分減らす

UnIndentFirstLine

字下げインデントを2文字分減らす

UnIndentLine

インデントを2文字分減らす

IncreaseIndent

インデントを字送り分増やす

HangingIndent

Ctrl+T

ぶら下げインデントを次のタブ位置まで増やす

UnHang

Chtl+Shift+T

ぶら下げインデントを前のタブ位置まで減らす

DecreaseIndent

インデントを2文字分減らす

AdjustListIndents

リストの位置を変更する

ListIndent

選択範囲を1レベル下げる

ListOutdent

選択範囲を1レベル上げる

Wordのリボン「ホーム」には「インデントを増やす」「インデントを減らす」というメニュー(ボタン)があります。これらは、キーボードショートカットとは異なるコマンドに対応しているようです。


【広告】
「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(50)インデント関係コマンド
シリーズ総目次


月曜日連載! Microsoft Wordスタイル探索(50)インデント関係コマンド

Microsoft Wordの機能はコマンドとして用意されていて、そのコマンドをリボンのメニューやキーボードのショートカットに割当られているようです。

コマンドの割り当ては、次のようにして変更できます。
①リボン「ファイル」の「オプション」メニューをクリックする。
②Wordのオプションダイアログが開くので、「リボンのユーザー設定」メニューをクリックする。
③「リボンのユーザー設定」ダイアログの左下「ユーザー設定」を開く。
するとキーボードにコマンドを割り当てるダイアログ(下図)が表示されます。

コマンド割り当てダイアログ

コマンド割り当てダイアログ


コマンドがカテゴリーに分類されて表示されます。

これをみるとインデント関係のコマンドが沢山あります。まずはどんなコマンドがあるかリストアップしてみましょう。

  • Indent
  • IndentChar
  • IndentFirstChar
  • IndentFirstLine
  • IndentLine
  • IndentSpecialFirstLine
  • IndentSpecialHanging
  • IndentSpecialNone
  • UnIndent
  • UnIndentChar
  • UnIndentFirstChar
  • UnIndentFirstLine
  • UnIndentLine
  • IncreaseIndent
  • HangingIndent
  • UnHang
  • DecreaseIndent
  • AdjustListIndents
  • ListIndent
  • ListOutdent

インデントに関係ありそうなのはこんなところです。ずいぶんたくさんありますね。

とりあえず、前回((49)インデントとタブの密な関係))使ったコマンドは次のようになっています。

リボン「ホーム」の「インデントを増やす」コマンド:Indent
[Ctrl]+[T]キー(ぶら下げインデントを深くする):HangingIndent


【広告】
「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(49)インデントとタブの密な関係
◆次回:(51)インデント関係コマンド(続き)
シリーズ総目次


月曜日連載! Microsoft Wordスタイル探索(49)インデントとタブの密な関係

前回((48)段落先頭行のインデント、タブの基本)は、タブ機能を使うと、字下げインデント、ぶら下げインデントと似たようなレイアウト指定ができることをお話しました。

今回はタブとインデントの関係をもう少し探索してみます。

まず、任意設定のタブ位置を次のように3文字毎に設定してみます。

任意設定のタブ位置を3文字毎にする

任意設定のタブ位置を3文字毎にする

そして、リボン「ホーム」の「インデントを増やす」コマンドでインデントを増やしてみます。すると、次の図のようにコマンドを一回クリックすると左インデント位置が任意設定の最初のタブ位置になります。そして、コマンドをクリックするごとに左インデント位置が任意設定の次のタブ位置に移動します。

インデントを増やすコマンドで左インデントが次のタブ位置に移動する

インデントを増やすコマンドで左インデントが次のタブ位置に移動する

タブ設定位置がインデントを増やすコマンドの左インデント位置として使われていることが分かります。

次は、ぶら下げインデントの場合です。まず、次のように任意設定のタブ位置を2文字毎に設定します。

任意設定のタブ位置を2,4,6,8文字に設定

任意設定のタブ位置を2,4,6,8文字に設定

次に、[Ctrl]+[T]キーを入力します。すると、次のようにぶら下げインデントが、最初の任意設定のタブ位置である2文字の位置になります。そして、[Ctrl]+[T]キーを入力するごとにぶら下げインデントの位置が深くなっていきます。

[Ctrl]+[T]でぶら下げインデントの位置が次の任意設定のタブ位置に移動する

[Ctrl]+[T]でぶら下げインデントの位置が次の任意設定のタブ位置に移動する

このようにインデント関係のコマンドとタブ設定位置には深い関係があることが分かりました。


【広告】
11月16日(火曜日)16時からの「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(48)段落先頭行のインデント、タブの基本
◆次回:(50)インデント関係コマンド
シリーズ総目次


月曜日連載! Microsoft Wordスタイル探索(48)段落先頭行のインデント、タブの基本

第45回で説明した右インデントと左インデントは用紙の余白を規準にして段落全体の開始位置と終了位置を変更(設定)する機能です。

月曜日連載! Microsoft Wordスタイル探索 (45)インデント機能の基本

それに対して、段落の最初の行だけの開始位置を変更するインデントが字下げインデントとぶら下げインデントです。

一行目(先頭行)インデントの設定

一行目(先頭行)インデントの設定

次の図は字下げインデントとぶら下げインデントをそれぞれ1文字に設定した段落の例です。

字下げインデント、ぶら下げインデントの設定例

字下げインデント、ぶら下げインデントの設定例

字下げインデントは段落の始まりを分かりやすくするために使います。日本語のレイアウトでは段落の先頭を1文字字下げするのが一般的ですが、活字方式では行頭に空白文字を1文字置きます。Wordの段落でこのようなレイアウトをするときは段落の先頭に空白文字を入力しないで、字下げインデントを使う方が、いろいろと好都合です。

タブ
インデントと類似の機能にタブがあります。タブは行の中にタブ位置を設定しておき、タブ文字(タブキーで入力する文字)から始まる文字列の始まりをタブ位置に設定する機能です。タブ位置は「タブとリーダー」ダイアログを使って「既定のタブ位置」の変更、または任意の位置にタブ位置を設定できます。

任意に設定したタブ位置はルーラーに表示されます。次の図は2文字の位置にタブを設定した例です。

任意の位置にタブをタブの設定

任意の位置にタブを設定

段落の先頭で「タブ」を入力(Tabキーを押下)すると段落の先頭が2文字目から始まります。これは先頭行インデントと似ていますね。

段落の先頭にタブを入力

段落の先頭にタブを入力

「Ctrl」キーと「T」キーで、2行目以降をタブ位置に揃えることができます。これはぶら下げインデントに似ています。

段落の先頭で字下げのタブを入力

段落の先頭でぶら下げのタブを入力

このようにタブ機能を使うと、一見、字下げインデント、ぶら下げインデントと似たようなレイアウト指定ができます。


【広告】
11月16日(火曜日)16時からの「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(47)本文領域の幅が文字数×文字サイズの値に一致しないときの余りの調整を探索
◆次回:(49)インデントとタブの密な関係
シリーズ総目次


e-na伊那谷 旅便り 第83回 二年参りと伊那スキーリゾート

明けましておめでとうございます。
年末年始は如何お過ごしでしたでしょうか。

長野県では「二年参り」を行う風習があります。
「二年参り」は初詣の一種で大晦日の夜から年明けにかけての初詣のことを「二年参り」と呼んでいます。
この風習により、年明けカウントダウンを行うような時間帯では神社に人が集まることが多く、
最寄りの神社などでは二年参りの際に知人と出会うことも珍しくありません。

今年は感染症予防を加味して、アンテナハウス伊那支店が所在する南箕輪村の神社に時間を早めてお参りしてきました。
南箕輪村役場の横に位置する八幡宮です。

お宮へ続く道からライトアップされていて神秘的な景観でした。(参拝者がいなかったこともあり)

破魔矢をお焚き上げして頂き、新しい破魔矢と家族分のお守りを授かって帰りました。
お守りには今年も家族が健康で過ごせるよう願いが詰まっています。

年末年始は運動不足になりがちなので、伊那スキーリゾートにいってウィンタースポーツで運動不足の解消です。
正直なところ白馬のゲレンデなどと比べるとコースは少なく距離も短いのですが、伊那市内から20分かからずにいけることが大きなメリットです。
中央道伊那インターからも近いですよ。

年始にいきましたが人も多く皆さん今年の初滑りを楽しんでいました。

久しぶりにスキーに挑戦しましたが、滑り方を忘れていて一度転んだまま動けませんでした・・
慣れているスノーボードに切り替えて(お守りの効果もあってか)怪我もなく楽しむことができました。

以上、「二年参り」「伊那スキーリゾート」についてお送りしました。
本年もどうぞ宜しくお願い致します。


『Office Open XML Formats入門 第2版』を制作しました

2021年12月07日 16:00~17:00 に「ちょっと一息アンテナハウスウェビナー『Office Open XML Formats入門 第2版』制作報告」を発表しました。販売、公開よりも発表が先になってしまったため、内容が気になっていた方もいらっしゃるのではないでしょうか。

こちらが表紙画像です。

Amazon POD用表紙画像

2021年12月07日ウェビナーのバナー

組版をAH XSL Formatter V7.2で行ったため、『AH Formatter XML関連出版物の紹介』ページに掲載しています。

Amazonの販売ページへのリンクは次の通りです。

https://www.amazon.co.jp/gp/product/4900552836

また、本書のPDF版は弊社オンラインショップからご購入いただけます。印刷版とレイアウトの微調整を行いました。

https://web.antenna.co.jp/shop/html/products/detail.php?product_id=1301

HTML版はOffice Servers資料室のページからご覧いただけます。


ウェビナー概要や書籍紹介ページにある通り、アンテナハウス『Office Open XML Formats入門』の初版は2007年に出版社から刊行されました。
今年は2021年、つまり14年程前の書籍の改訂版ということになります。
内容的な修正は必要とはいえ、以前の版の原稿をベースに新たな版を制作するというとき、XML原稿はほとんど変更が必要ありません。以前の版の構造に不満がある場合はその限りではありませんが。

一方で大規模な修正の余地があるのがXSLTでした。そしてウェビナー(と書籍の後書き)では、XSLTについてはかなり省いて説明することになったため、本記事ともう一度どこかで補足することにしたいと思います。

2007年というのは、XSL的にもそこそこ大きな節目でした。XSLT 2.0のW3C勧告です。XSL 1.1の勧告は2006年でしたが、実利用として熟れていないという点では二者とも同様です。XSLT 2.0以降はミスの発見やスクリプトの見通しにおいてXSLT 1.0とは別言語に近い体験をもたらします。msxmlのXSLTが1.0であることや各ウェブブラウザほか処理系の多くが1.0までしか対応していないことも手伝って、使える状況が限られるのは悩ましいところです。

変更の概略

今回は自社事例でしたので、初版で1.0だったXSLTを3.0に書き換えました(完全に3.0向けに最適化したとはとても言えませんが)。

書籍初版の制作報告にもあったように、XSL 1.1での大きなポイントにbookmarkのとindex関係の語彙が入ったことが挙げられます。『Office Open XML Formats入門』初版では、bookmarkについてはXSL Formatterの拡張仕様、索引についてはbasic-linkとXSLTによる力技による解決が図られていました。

(AH )XSL Formatterの拡張仕様では実際のフローコンテンツ登場箇所と同一の箇所に記述するため、処理においてXML中の章構造に当たったときに同時に処理すれば良いことになります。よってXSLT記述としてはbookmark-tree用に処理を追加するよりも単純に書けます。XSLT 1.0で書く場合は複数回ドキュメントを走査することが難しいということも手伝っていたのかもしれません。

索引構造については、XSL 1.1のindexを導入することで、XSLTで行わなければならなかった処理が簡略化されます。索引語に当たったときの処理で、「既に同じ索引語が登場しているか」「同じ索引語が同ページに登場したときにページ数表示を合一する」といった判別がXSLのプロパティで変更可能になるため、分岐処理などが大幅に簡略化できました。

割とアドホックな書き換えを行っていたり、徹底できていなかったりするため、引き継ぎをするにはリファクタリングが必至ですが、大体このようなことを行いました。

  • テンプレート中に直接書き込まれたattributeをattribute-setへまとめる
  • 共通処理をまとめる。
  • apply-templatesを含まないような分岐は名前付きテンプレートへ追いだし、パラメータを渡すようにする
  • XPathによる値の取得はできるだけテンプレートの先頭でまとめ、利用箇所ではselect="$value"のように呼び出すだけにする

先に書いた通り徹底はできておらず、私自身も、テンプレート中で直接attributeを指定しているような箇所をかなり生み出してしまいました。とはいえ、ギリギリの時期に「ヘッダーの位置をもう少し下げて」といった指示に1行の変更だけで対応できるようにはできたので、無駄ではなかったと思います。

実は上に挙げたものはXSLT 1.0時点でも時間さえあれば行える変更で、3.0への変更には関係ありません。値のみを取得、操作したい箇所をfunction化したり、処理をreplace()関数に書き換えたりといった作業は2.0から行えます。3.0としては関数の括弧が入れ子ではなくarrowを使えたり、文字列結合に「||」を使えるといった枝葉の変更点を使用しています。

参考資料


Pages: 1 2 3 4 5 6 7 8 9 10 ... 221 222 223 Next