Location via proxy:   
[Report a bug]   [Manage cookies]                

XSLT3.0への道(35) xsl:copy

いまさらですがXSLT 3.0でちょっと便利になった機能のお話の続きです.
よくノードのコピー処理で次のようなテンプレートを作ると思います.

<xsl:template match="node()">
    <xsl:copy>
        <xsl:apply-templates select="@*"/>
        <xsl:apply-templates/>        
    </xsl:copy>
</xsl:template>

<xsl:template match="@*">
    <xsl:copy/>
</xsl:template>

xsl:copyは「コンテキストアイテム」(ここでは子ノードとか属性ノード)があってくれて初めてコピーをやってくれます.これはこれで良いのですが、テンプレートの中では意図的にある要素に「位置づけて」コピーをやらせたい場合があります.このような場合、XSLT 2.0mではたいていxsl:for-eachを使うしか手がありませんでした.xsl:for-eachで強制的にコンテキストアイテムを移動させる訳です.

<!-- "/p[4]"以下だけコピーする-->
<xsl:for-each select="/p[4]">
    <xsl:copy>
        <xsl:apply-templates select="@*"/>
        <xsl:apply-templates/>        
    </xsl:copy>
</xsl:for-each>

XSLT 3.0では便利になって、xsl:copy/@selectが書けるようになりました.これでxsl:for-eachは不要となります.

<!-- "/p[4]"以下だけコピーする-->
<xsl:copy select="/p[4]">
    <xsl:apply-templates select="@*"/>
    <xsl:apply-templates/>        
</xsl:copy>

つまりxsl:copy/@selectを書くと自動的にコンテキストアイテムが移動してくれることになります.たったこれだけのことですが、時によっては大変ありがたい機能です.

XSLT 3.0の仕様はこちらです.

www.w3.org

"斎藤幸平著『大洪水の前に』と『人新世の「資本論」』によせて"を読む

岡山大の太田仁樹名誉教授の "斎藤幸平著『大洪水の前に』と『人新世の「資本論」』によせて"を読む.
『#マルクス は「ザスーリチへの手紙・草稿」において初めて「定常経済」としての共同体の再生という観点に立つことができたのです.定常性認識の獲得により「進歩史観」の克服が可能になり、「生産力至上主義」と「ヨーロッパ中心主義」からの離脱も可能となったのです.ここで注目すべきは「コミュニズムという歴史を作る力」として、「宣言」から「資本論」まで、マルクス は一貫してプロレタリアートという変革主体を措定していたのですが、斎藤氏はそれに変わって「共同体が」その力を持つと宣言していることです.唯物史観の根幹を覆しているのですから、マルクスの思想発展上の「大転換」というべきです』
これは解説ではなく明確な斎藤幸平批判ですね.

オープンソースソフトウェア

会社の GitHubリポジトリオープンソースのプログラムを公開しています.DITA(Darwin Information Typing Architecture)という分野のフレームワークプラグインで、XML(eXtensive Markup Language)にスタイル付けをして最終的にPDFを生成します.意外と世界の人に使っていただいています.このため予期せねタイミングで質問やサポートリクエストがIssuesトラッカーへのポストで寄せられます.そうするとすぐに作者の私のところへメールが配信されて回答を書かねばなりません.趣味で使うようなものではないので大半は企業ユーザーの方と思います.つまり先方にとっては結構重要なものばかり.今週は3件も立て続けに来ました.ポストされる時間帯を見ていると、およそのその方の地域がわかります.今週はヨーロッパでした.単なる回答を機械的に書くだけでなく、時にはサンプルプログラムを書いたり、動かした結果を貼ったりと、本業の仕事の合間にやるのは結構大変.でもIssueトラッカーで返事を書くと5分としないうちに先方から返事がポストされたりと、何か不思議な連帯感のようなものを感じます.相手は顔を見たこともない世界のどこかの国のソフトウェア技術者.インターネットを通じて、同じプログラムを動かそうと「繋がって」います.こういうのがあるからこの仕事辞められないですね.

反デューリング論

「反デューリング論」を読み終えました.「『資本論』が科学的社会主義の基礎をすえたといっても、それは大衆的な書物ではありませんでした.(第一巻の第一版の発行部数は1,000部でした.実際、ドイツの党の中でも『反デューリング論』によって、はじめて #科学的社会主義 のまとまった知識を得たという人々が圧倒的に多かったと思います.まさに『反デューリング論』は、科学的社会主義に学説を普及させ、その理論的な影響を広げるうえで、事実上決定的な役割を果たした書物となりました.」(不破「エンゲルス資本論」より)

資本論第一巻」ー「エンゲルス資本論」ー「反デューリング論」と長い読書でした.この本にはエンゲルスがデューリング氏のあらゆる分野にわたる批判に答え、「資本論」の見地を駆使し、理論的展開を行っています.少しずつ貼った付箋がいっぱいになってしまいました.

反デューリング論

10年ぶりでJavaのSwing

一週間缶詰めで Java + Swing の世界に戻ってコーディングの羽目になりました.写真の参考書は大村忠史氏のもの.実はこの本買うの3回目です(!?).最初は2006年ころこの前の版を買って開発、同僚に貸したらなんと無くしちゃってこの版で弁償してもらう.ところがそれもまた会社で行方不明で、今回またメルカリで購入.Amazonで新品買うと超高い!メルカリは1,000円以下でほぼ新品で感激!大変役に立ちました.

メルカリで買ったJava GUIの上下巻

DITA-OT 4.2

やっぱり使うなら一番新しい「ヤツ」がいいんじゃないか?と思ってDITA-OT(DITA Open Tool Kit)を4.1.2から4.2に上げてみました.
でもですね、こういうメジャーなバージョンアップの時はやっぱりいろいろ問題があるようです.私のプラグインXSLTスタイルシートがxsl:messageで出しているメッセージがログ上でちょん切られてしまいました.

DITA-OT 4.1.2

[xslt] [WARNING][General 001W] No template is defined for this element. element=indexterm

DITA-OT 4.2

[WARNING] No template is defined for this element. element=indexterm

えっ!削られたところはテンプレートを示す名前とメッセージ番号です.これが出てくれなければデバッグできませ~ん!
致し方なくGitHubのDITA-OTのQ&Aにポスト

Plug-in specific xsl:message has been changed in 4.2
github.com

そういえばリリースノートにそれらしきことが書いてありました.

www.dita-ot.org

CLI message improvements

開発者のJarnoさんは良かれと思って実装したんでしょうがプラグインを作る側では困りものです.やっぱりDITA-OT使うならメジャーバージョンアップのあとのリビジョンアップしたヤツがベターなようですね.

※ ちなみにOxygen( https://www.oxygenxml.com/ )のRaduによれば、この手の質問をポストする先だったGoogle Group( http://dita-ot-users@googlegroups.com )はもうdeprecatedなんだそうです.DITA-OTについては、 https://github.com/orgs/dita-ot/discussions がイイそうです.