e-na伊那谷 旅便り 第38回 信州伊那栗

長野県で栗といえば小布施町を思い浮かべる方が多いと思いますが、ここ数年で注目されている、上伊那郡飯島町を中心に栽培される「信州伊那栗」をご存知でしょうか。

その信州伊那栗を使った和洋菓子の開発・販売を行う信州里の菓工房へ、秋の味覚を味わいに行ってきました。

店内は、栗きんとんからパウンドケーキ、コンフィチュールまで、和洋を問わず栗の味わいを生かしたお菓子が勢揃い。
お土産としてはもちろんのこと、行事ごとのギフトや贈答用のお菓子としても最適です。

カフェも併設されており、ケーキコーナーのケーキをオーダーして頂くこともできます。
カフェ限定で、新栗収穫期しか味わえない人気メニューの「できたてモンブラン」は外せません。

美味しい瞬間を味わえるよう、オーダーを受けてから絞るので栗の味が濃厚ですが甘すぎず、中に入っているサクサクのメレンゲがアクセントで最高の逸品です。(毎年大好評につき販売期間を延長し2月末まで味わえるそうです。)

他にも、「栗のソフトクリーム」「シャインマスカットのタルト」「王様のチョコレート」を頂きました。

どれも素材の味が引き立っていてとても美味しかったです。

テラス席で、秋風を感じながらの至福のひと時を過ごせました。
通販サイトもありますので、「南の伊那栗」を堪能してみてはいかがでしょうか。



「ScanSave」が第14回JIIMAベストプラクティス賞ダブル授賞!

アンテナハウス株式会社の推薦下記2事例が第14回 JIIMA ベストプラクティス賞
に受賞しました。

株式会社 武蔵野様
「OCR 活用によるダスキン伝票・経費精算領収書等のペーパーレス化実
現」
茨城県大同青果株式会社様
「2 年前の『スキャナ保存』本番後に目覚めた!バックオフィス業務丸ご
とペーパーレス化の実現!」

詳しくは、下記をご覧ください。
https://www.jiima.or.jp/wp-content/uploads/pdf/14th_bestpractice.pdf

「受賞された企業様がご利用されているアンテナハウス・クラウドサービスに
ついて」はこちらをご覧ください。
https://www.antenna.co.jp/scansave/ss-on-onesaas.html

【補足説明】

JIIMAとは:

公益社団法人 日本文書情報マネジメント協会(理事長 勝丸 泰志)

「ベストプラクティス賞」について:

日本文書情報マネジメント協会(略称;JIIMA)は、60 年にわたり文書情報マネジメントの普及啓発に努めている国内唯一の公認団体です。マイクロフィルムの普及からスタートした活動は時代の変遷とともに変化し、現在では「安心で社会生産性の高い電子文書情報社会の構築」を目指して、文書情報マネジメントを普及啓発する公益活動を続けております。その一環として 2007 年(平成 19 年)より先進的な文書情報マネジメントシステムを導入し、顕著な成果を出された企業・団体に対して『ベストプラクティス賞』を設け表彰しております。本年度の JIIMA ベストプラクティス賞は、審査委員会での厳正な審査の結果、下記
の 7 事例に授賞が決定し、JIIMA ホームページで公表すると共に、11 月 12 日(木)から開催予定のJIIMA 主催 『デジタルドキュメント 2020 ウェビナー』で授賞発表と、受賞記念講演を行います。


秋のウェビナー厳選2回「ANA・AS様」「茨城県大同青果様」登壇! (アンテナハウス)

この度の秋のウェビナーでは、ANAエアポートサービス株式会社様と茨城県大同青果株式会社様のプロジェクトリーダーにご登壇いただき、「ScanSave」の導入ユーザーの目線でたっぷり語って頂きます。

貴重な機会です。どうぞ下記よりお申し込みください。

10月15日『2年前の「スキャナ保存」本番後に目覚めた!
バックオフィス業務丸ごとペーパーレス化の実現!』

開催日時 13:15~14:30(本番開始
会場 Zoomウェビナー
概要 2018年に販売・仕入業務について、電子帳簿保存法へ対応し、JIIMA第12回ベストプ
ラクティス賞を受賞された
茨城県大同青果株式会社様の最新事例セミナーです。
一朝一夕はいかない各種申請業務の丸ごとペーパーレス化へ向けて、同社のこれまで
の取り組みと、これからの取り組みについて体験談などをお話しいただきます。

お申し込み

(2通りあります。ご都合の良い方法でお申し込みください)

 


10月16日『【2年越しの検討から本番開始!】
ANAエアポートサービス(株)様のスキャナ保存事例セミナー』

開催日時 13:15~14:30(本番開始
会場 Zoomウェビナー
概要 2018年夏から本格検討してきた電子帳簿保存法「スキャナ保存制度」で、「請求
書」「領収書」の本番運用を迎え、安定稼働に入られたANAエアポートサービ
ス株式会社 総務・企画部 経営管理課のキーマンに語っていただきます。

お申し込み

(2通りあります。ご都合の良い方法でお申し込みください)

【オンラインセミナー、キャンペーン、製品等お問い合わせ】

担当 アンテナハウス株式会社
e-ドキュメントソリューショングループ(edoc_ah@antenna.co.jp
TEL 03-5829-9021


XProcの紹介

makeが良い、悪い」という話が一部で盛り上がっているのを見ました。
結局ツールなので、「用途に向いていなくても慣れなどを取る」か「学習が必要でも別のものを使う価値が見合う」かといった、状況に合わせた選択が必要になるでしょう。個人的にはファイルの絶対パスをハードコードするのは可能な限り避けてほしいですが。

ビルドツールにも様々な得手不得手があるものですが、XMLに特化したものもあります。そんな導入で、XProcの話題です。

XProc: An XML Pipeline LanguageはXML文書やその他の処理を記述するための言語です*1
W3CのページのAbstractには“Pipelines generally accept zero or more XML documents as input and produce zero or more XML documents as output.”とあります。ステップ処理として記述ができる、ファイル操作についてもある程度はできるなど他にもありますが、XSLTとは目的も書き味も結構違います。

2010年に1.0がW3C仕様として勧告された後、勧告としてはそれが最新の状態がまだ続いています。しかし、2020年8月19日にXProc 3.0の最終ドラフトが上がっており*2、期待が持てるようになってきました。Editor’s Draftは8月31日に更に更新されていますが。ちなみに2.0は諸般の事情で見送られています。

また、XMLPressから2020年4月に『XProc 3.0 Programmer Reference』(Erik Siegel)*3が刊行されています。W3CのXProc仕様のEditorであるNorman Tovey-Walsh氏による推薦文もついていますし、Erik Siegel氏も XProc 3.0 editorial teamのメンバーです。
XProc 3.0についてはドラフト版仕様とこの本を読むのが確実でしょう。

XProc 3.0でのもっとも大きな改良点はXSLT同様にXPath 3.1に対応したことだと思いますが、今回はXProcの雰囲気だけ紹介します。


<!-- 1. Pipeline document: -->
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" version="3.0">

  <!-- 2. Pipeline port declarations: -->
  <p:input port="source" primary="true" />
  <p:output port="result" primary="true" />
  <!-- 3. Convert document to HTML: -->
  <p:xslt>
    <p:with-input port="stylesheet" href="xsl/basic-conversion.xsl" />
  </p:xslt>
</p:declare-step>

上のコードは『XProc 3.0 Programmers Reference』*3「Getting started with XProc」にある例です。
<p:declare-step>がルート要素です。inputやoutputを省略できる<p:pipeline>も使用できますが、
2行程度では大して労力は変わらないですね。

XMLSchemaのネームスペースが宣言されているのは、XSLT同様asで型を明示できるからです。

書かれた処理を簡単に書けば、「入力をxsl/basic-conversion.xslのXSLTで処理し、出力へ渡す」ということになります。しかし、よくわからないプロパティportの存在がありますね。それぞれの指定で想像が付くかと思いますが、inputによる入力を処理対象(source)というportにつなぎ、with-inputによる入力は(XSLT)スタイルシートというportにつなぎ、このスタイルシートによってsourceを処理します。そしてresultというportにつながった出力へ結果を渡す、という流れです。こう書くと同語反復をしているように感じられるかと思いますが、それぞれのportにきたものをステップ処理していく流れが直観に近い記述で書けるということです。他のportとしては、スキーマの検証のスキーマを渡すためのschemaなどがあります。
<p:xslt><p:validate-with-xml-schema>はデフォルトのstepです。portは決まったstepと結びついていて、portに渡したものは結びついたstepが記述されていれば、そのstepで処理されます。デフォルトのstepとport、そして独自のstepと結びついた独自のportを記述していくことがXProcの基本となります。

*1 https://www.w3.org/TR/xproc/
*2 https://spec.xproc.org/lastcall-2020-08/head/xproc/
*3 https://xmlpress.net/publications/xproc-3-0/



e-na伊那谷 旅便り 第37回 ご当地ビール

9月となり、「実りの秋」ということで、近くのブドウ園にブドウ狩りにいこうかな?と調べてみますと、残念ながら、「コロナにより今秋は直売のみ営業」となっていました。
まだまだ色々なイベントや施設の自粛が続くようです。
もうしばらく家で楽しみましょう。

そんなわけで手の消毒にアルコールが手放せませんが、
飲む方のアルコールに何か地のものがないかな?と探してみました。
暑いときはやっぱりビールですね。

南信州ビール

南信州ビール
南信州ビールとは?
長野県第1号のクラフトビールで、中央アルプスの雪解け水を豊富に含んだ地下120mより汲み上げた地下水を使ったエール系ビールです。
気の里ビール

気の里ビール
気の里ビールとは?
ご存じの方も多いかと思いますが、一時期ブームになったパワースポット「伊那市長谷村・分杭峠」の地下水で醸造したビールです。
ここには私も何度かパワーを貰いに行ったことがあります。
分杭峠の氣場からの景色

分杭峠の氣場からの景色

機会がありましたら、分杭峠を訪れて、ビールや分杭峠の水をおみやげにいかがでしょうか。
(通販でもご購入いただけます)



電帳法スキャナ保存の「禁じ手」_「一の入力単位」について YouTubeミニセミナー第15弾

デジタル化に舵を切る為の最短コースである国税庁の「電子帳簿保存法」「スキャナ保存」、その「禁じ手」と「リスク」への考察をします。

電子帳簿保存法4条3項で規定されている「スキャナ保存」制度の保存要件は同法施行規則3条に細かく規定されていて、その要件を同法通達*1や通達趣旨説明並びに一問一答*2で補完されています。

今回のテーマは「一(いち)の入力単位」です。本要件は特別注意が必要です。是非本セミナーで確認してください。

内容をギュッと7分に圧縮して、YouTubeでいつでも視聴できるミニセミナーにしました。
お好みのところのみ短時間での確認も可能です!!

  1. *1 電子帳簿保存法取扱通達の制定について|国税庁 https://www.nta.go.jp/law/tsutatsu/kobetsu/sonota/980528-4/index.htm
  2. *2 電子帳簿保存法Q&A(一問一答)|国税庁 https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/07index.htm

【 公開セミナー 一覧 】

  1. 第1回 「日本はデジタル化後進国か?!」
    https://youtu.be/aKctKhLRjOY
  2. 第2回 「電帳法」を優しく解説
    https://youtu.be/RbEZe00m0TA
  3. 第3回 「帳簿・書類」の7年保存がそもそも何故求められるのか?
    https://youtu.be/Ht68XGdFdnU
  4. 第4回 タイムスタンプって_なに?
    https://youtu.be/RqRbwlHvAfo
  5. 第5回 国税庁の「電子帳簿保存法」のページの見方
    https://youtu.be/pCUfL17KgEY
  6. 第6回 電帳法4制度の横断的概要学習!
    https://youtu.be/5HbsneGZAFQ
  7. 第7回 電帳法_電子取引の最新情報!
    https://youtu.be/cRT4Cw4-n70
  8. 第8回 電帳法_導入手順!
    https://youtu.be/a7lRuEusH1Q
  9. 第9回 電帳法対応のシステム・サービスのご説明
    https://youtu.be/742w23Xd4RQ
  10. 第10回 「ScanSave」のデモムービーシリーズ 基礎編_「多彩な入力機能」
    https://youtu.be/RCN1lXSU94Y
  11. 第11回 「ScanSave」のデモムービーシリーズ _「多彩な入力機能」_応用編
    https://youtu.be/3jXpPZVM4Ko
  12. 第12回 「ScanSave」のデモムービーシリーズ _まとめてタイムスタンプ
    https://youtu.be/klXAns3Mgc4
  13. 第13回 「ScanSave」のデモムービーシリーズ _エキスポート機能について
    https://youtu.be/MhREvX_kRBU
  14. 第14回 電帳法スキャナ保存の「禁じ手」_「業務サイクル越えの原本廃棄」
    https://youtu.be/HjM9jmgvE94

筆者紹介
益田康夫
メールアドレス:masuda@antenna.co.jp
1984年に社会人になり、IT業界一筋ながら3回の転職を経て現在に至っています。
特に2008年のリーマンショック後の不況の影響を受けて、2010年6月末にリストラ退社して現本業のアンテナハウス株式会社 https://www.antenna.co.jp/ に入社しました。Sun MicrosystemsやOracleを中心にしたITインフラから、IAサーバとしてのCompaqやIBMなどや、文書管理システムやポータルシステムを販売していた前職と、現在のアンテナハウスでのPDF技術や電子ファイルの変換技術などを中心にした、e-ドキュメントソリューションを探求してノウハウを習得してきました。特に、2011年以降、個人で学習時間をひねり出して、文書情報管理士資格2級、1級、上級と最短記録でレベルアップさせ、更に国家資格の行政書士※、日商簿記3級を2015年までに取得しました。
※行政書士とは、https://www.gyosei.or.jp/information/ をご覧ください。


XSLT 3.0(XPath 3.1)JSONをXMLに変換せずに利用する

先週はXMLの形にしたJSONを、XMLにしないまま扱う方法について紹介します。CSLはでてきません。

XPath 3.1*1で名前にJSONが入る関数は4つです。

  • fn:parse-json($json-text as xs:string?, $options as map(*))
  • fn:json-doc($href as xs:string?, $options as map(*))
  • fn:json-to-xml($json-text as xs:string?, $options as map(*))
  • fn:xml-to-json($input as node()?, $options as map(*))

$optionsについては説明しません。JSONをテキストとして引数にとるのがfn:parse-json()fn:json-to-xml()
fn:json-doc()は外部JSONファイルを読み込むときなどに指定します。fn:unparsed-text()で取得したテキストをfn:parse-json()へ適用するのと
大体同じことを行います。今回取り上げるのはfn:parse-json()fn:json-doc()についてです。

mapとarray

関係する名前空間は次に挙げるものです。

  • fn=”http://www.w3.org/2005/xpath-functions”
  • map=”http://www.w3.org/2005/xpath-functions/map”
  • array=”http://www.w3.org/2005/xpath-functions”

XPath 3.1のmap構造とarray構造は一般的なプログラミング言語におけるそれとほぼ同じもので、JSONオブジェクトをそのままの形で格納できます。
先週登場したJSONを見てみましょう。

{
    "items": [
        {
            "id": "7646893/2E3MJB9A",
            "type": "book",
            "title": "スタイルシート開発の基礎",
            "publisher": "アンテナハウス株式会社",
            "publisher-place": "Tokyo",
            "event-place": "Tokyo",
            "ISBN": "978-4-900552-23-4",
            "language": "ja",
            "author": [
                {
                    "family": "アンテナハウス株式会社",
                    "given": ""
                }
            ],
            "issued": {
                "date-parts": [
                    [
                        2016,
                        5
                    ]
                ]
            }
        }
    ]
}

このJSONを外部ファイルとして取り込むには次のように記述します。

<xsl:param name="input" >'exported-data.json'</xsl:param>
...
<xsl:variable as="map(*)" name="jsonMap" select="fn:json-doc($input)"/>
<!-- または -->
<xsl:variable as="xs:string" name="json-text" select="fn:unparsed-text($input)"/>
<xsl:variable as="map(*)" name="jsonMap" select="parse-json($json-text)"/>

XMLに変換した先週と、mapやarrayを活用する今回はこの後がまったく異なります。

次の記述で、先頭のtitleを一息で取得します。

<xsl:value-of select="map:get(array:head(map:get($jsonMap, 'items')), 'title')" />

まず、最も外側のmapから、itemsのキーを持つ要素を取得します(map:get($jsonMap, 'items'))。
キーitemsの値はarray型です。このままmap:get()を行おうとしてもできませんから、arrayの先頭を取り出すarray:head()を使用しています。ところで上の記述はパイプ演算子を使えば次のように書けます。

<xsl:value-of select="map:get($jsonMap, 'items') => array:head() => map:get('title')" />

mapのarrayでは、map:find()を利用することで指定したキーの値を配列で得ることもできます。挙動の詳細はXPath 3.1*1かXSLT 3.0*2のページを確認してください。

typeの値が何種類かに決まっていて、その種類を元にif文の判定をしたいのであれば、次のように書けます。

     <xsl:variable as="map(*)" name="item" select="map:get($jsonMap, 'items') => array:head()" />
      <xsl:if test="map:get($item,  'type') =  'book' or 'proceedings'">
      <xsl:value-of select="map:get($item, 'type')" /> <!-- book -->
      </xsl:if>

もちろんXMLの構造に変換しても同じことはできますが、より一般的なプログラミング言語に近い形で扱えています。

mapやarrayとして扱うために、JSONテキストとして記述してパースしたり、select="map{"key":value}"のような書き方をする以外に、<xsl:map><map-entry>を使うことができます。

mapの操作はエントリの追加やキー指定での削除などの他、map:merge()によるmapの統合、map:for-each()によるmap要素単位での関数適用などが可能です。arrayの方はarray:fold-left()array:fold-right()の畳み込み関数や、array:for-each()でarrayの要素ごとに関数適用などなど、XML形式を扱うよりもすっきりした構文で記述が可能な関数が用意されています。

注意しなければならないこととして、mapであるかarrayであるかを間違えるとうまく値を取り出せません。$itemnodeでもないので、直接xml-to-json()は使えません。

仕様やSaxonのドキュメントとにらめっこをしながら紹介してきたXSLT 3.0とXPath 3.1のJSONの扱いですが、誤りなどありましたらご指摘ください。

*1 https://www.w3.org/TR/xpath-31/
*2 https://www.w3.org/TR/xslt-30/


参考資料



e-na伊那谷 旅便り 第36回 川下り米

お盆が過ぎても連日の猛暑ですが、朝晩はずいぶんと涼しくなってきました.田んぼの稲も8月の初めに出穂(しゅっすい)して今は刈取り前の重い穂をつけています.今回は伊那の川下り米について紹介します.

川下り米とは

川下り米とは長野県伊那市の三峰川水系でとれるお米を指します.三峰川は南アルプスジオパークと呼ばれる広大な南アルプスを源にして、伊那市長谷村を高遠町に向かって南から北に流れ、そののち伊那市の市役所の南側で天竜川と合流します.
南アルプスを源流としているため、その水は山の多様な岩石から出たミネラル分を多く保有し、その水を吸って育ったお米はいわゆる「食味」が高く美味しいとされています.
えっ?日本にはいろいろなブランド米があるのにそれよりおいしいの?と思われる方がいるかもしれません.
実は信州大学農学部の井上直人教授が2008年に伊那市各地の米の成分分析を行いました.その結果、新潟県魚沼などの日本各地のブランド米と同等かそれ以上にマグネシウムや鉄分、銅、亜鉛などといったミネラル成分を含み食味に影響していることを報告しています.この一部は、「おいしい穀物の科学~コメ、ムギ、トウモロコシからソバ、雑穀まで」(井上直人著 講談社 ブルーバックス 2014年)に掲載されています.


私たち伊那市の住人は普段何も気にせず地元のお米を食べています.昔他県に行っていた学生時代に家から仕送りで送られてきた川下り米を、そちらの知人にお譲りしたことがありました.あとからその知人に「子供たちが『このご飯はおいしい』とおかずなしで何杯も食べて驚いた.なぜあんなにおいしいの?」と聞かれて返答に窮したことがあります.それほどまでに川下り米はおいしいのですね.

伝兵衛井筋

さて三峰川水系の水といっても、盆地の真ん中の低いところを流れる川の水は直接水田にとりいれられるわけではありません。私の住んでいる伊那市の東春近は、三峰川の南、天竜川に対しては河岸段丘の上なので、川は見下ろす位置にあります。ではどのように水田の水を得ているかと言いますと、今から360年も前から幾多の苦労を経て作られた伝兵衛井筋という三峰川の上流から取水する用水路でこの地域全体の水田に入れる水がまかなわれています。
http://www.nag-doren.or.jp/wp/wp-content/themes/world/images/sosui/kamiina/pdf09.pdf

穂が出る今の時期は、水路の水は奪い合いです.特に私の家の田んぼは取水口が離れているため、上流で取水して水量が減るとまったく水が入ってくれません.このため、水量が戻る夜間にしか水を入れることができません.また平地と違って、盆地の方向の北から南へ、河岸段丘の東から西へと、田んぼは段差があります.下手をすると隣の田んぼと高さが1m以上もある場合があります.こういう土手はモグラの恰好の住処となり、そこらに穴を掘られて漏水してしまいます.夜中に懐中電灯とスコップを持って穴をふさぎに行かねばなりません.お米作りもなかなか大変です.

消費者と結ぶ

農家が加入するJA上伊那では、生活クラブ生協との間で、私の伊那市東春近地域、伊那市の南に位置する宮田村の水田を対象としてお米を契約栽培しています.今は新型コロナの流行で中止されていますが、毎年生活クラブ生協の組合員の方が子供連れで地元に来ていただき、水田での生き物調査や食事会、経験交流などを行ってきました.生活クラブ生協に出荷するためには、水田で年間に使用する農薬の成分数を8以下にすることが厳しく求められており、契約栽培の水田には以下のような看板を立てることになっています.

この契約米は、生活クラブ生協で「上伊那アルプス米」として組合員の方々に提供していただいています.
https://seikatsuclub.coop/item/rice/669890.html
※ 9成分とありますが、近年は8成分に制限されています.

さてこのような伊那の川下り米、「伊那華の米(いなかのこめ)」としてJAからご購入いただけます.是非一度味わってみてください.

https://www.ja-town.com/shop/g/g3801-114014/


電帳法スキャナ保存の「禁じ手」ついて YouTubeミニセミナー第14弾

デジタル化に舵を切る為の最短コースである国税庁の「電子帳簿保存法」「スキャナ保存」、その「禁じ手」と「リスク」への考察をします。

電子帳簿保存法4条3項で規定されている「スキャナ保存」制度の保存要件は同法施行規則3条に細かく規定されていて、その要件を同法通達*1や通達趣旨説明並びに一問一答*2で補完されています。

今回のテーマは「「業務の処理に係る通常の期間」を経過した紙書類を定期検査後廃棄する行為」です。

内容をギュッと8分に圧縮して、YouTubeでいつでも視聴できるミニセミナーにしました。
お好みのところのみ短時間での確認も可能です!!

皆様のお役に立てれば幸いです。
また、要望を頂ければ、その要望にマッチした、セミナーの制作を検討させていただきます。

  1. *1  電子帳簿保存法取扱通達の制定について|国税庁 https://www.nta.go.jp/law/tsutatsu/kobetsu/sonota/980528-4/index.htm
  2. *2 電子帳簿保存法Q&A(一問一答)|国税庁  https://www.nta.go.jp/law/joho-zeikaishaku/sonota/jirei/07index.htm

【 公開セミナー 一覧 】

  1. 第1回 「日本はデジタル化後進国か?!」
    https://youtu.be/aKctKhLRjOY
  2. 第2回 「電帳法」を優しく解説
    https://youtu.be/RbEZe00m0TA
  3. 第3回 「帳簿・書類」の7年保存がそもそも何故求められるのか?
    https://youtu.be/Ht68XGdFdnU
  4. 第4回 タイムスタンプって_なに?
    https://youtu.be/RqRbwlHvAfo
  5. 第5回 国税庁の「電子帳簿保存法」のページの見方
    https://youtu.be/pCUfL17KgEY
  6. 第6回 電帳法4制度の横断的概要学習!
    https://youtu.be/5HbsneGZAFQ
  7. 第7回 電帳法_電子取引の最新情報!
    https://youtu.be/cRT4Cw4-n70
  8. 第8回 電帳法_導入手順!
    https://youtu.be/a7lRuEusH1Q
  9. 第9回 電帳法対応のシステム・サービスのご説明
    https://youtu.be/742w23Xd4RQ
  10. 第10回 「ScanSave」のデモムービーシリーズ 基礎編_「多彩な入力機能」
    https://youtu.be/RCN1lXSU94Y
  11. 第11回 「ScanSave」のデモムービーシリーズ _「多彩な入力機能」_応用編
    https://youtu.be/3jXpPZVM4Ko
  12. 第12回 「ScanSave」のデモムービーシリーズ _まとめてタイムスタンプ
    https://youtu.be/klXAns3Mgc4
  13. 第13回 「ScanSave」のデモムービーシリーズ _エキスポート機能について
    https://youtu.be/MhREvX_kRBU

筆者紹介
益田康夫
メールアドレス:masuda@antenna.co.jp
1984年に社会人になり、IT業界一筋ながら3回の転職を経て現在に至っています。
特に2008年のリーマンショック後の不況の影響を受けて、2010年6月末にリストラ退社して現本業のアンテナハウス株式会社 https://www.antenna.co.jp/ に入社しました。Sun MicrosystemsやOracleを中心にしたITインフラから、IAサーバとしてのCompaqやIBMなどや、文書管理システムやポータルシステムを販売していた前職と、現在のアンテナハウスでのPDF技術や電子ファイルの変換技術などを中心にした、e-ドキュメントソリューションを探求してノウハウを習得してきました。特に、2011年以降、個人で学習時間をひねり出して、文書情報管理士資格2級、1級、上級と最短記録でレベルアップさせ、更に国家資格の行政書士※、日商簿記3級を2015年までに取得しました。
※行政書士とは、https://www.gyosei.or.jp/information/ をご覧ください。


Citation Style Languageの話(2) – 引用データJSONのXML化

前回引用データとスタイルの分離の必要性については述べていたので、CSL自体の歴史を見てみました。

Citation Style Languageの歴史について、
CSLのページ*1によれば、Bruce D’Arcus氏を中心に開発され、初期はZoteroのSimon Kornblith氏
がコントリビュートしていました。近年は Frank G. Bennett, Jr. と Rintze M. Zelleによって開発が主導されています。リンクが張られている2010年9月の外部記事はすでに読めなくなっていて、Blogは1.0のニュースリリース*2からです。

Wikipediaの記事*3にはその前身はBiblioXという取り組みであると記載されているのですが、2020年8月31日現在BiblioXのページは消失しており、辿ることが少し難しいようです。BiblioXの発表は2004年ですので、合わせれば15年以上の歩みとなります。

脱線しますが、URLが失効しあるものの歴史を辿るのが難しいというのは堪えます。Web Archiveなどのプロジェクトにしても、無限、無制限というわけにはいきません。それでも、参照した情報元が分かるよう引用情報を記述することの大事さを噛みしめています。

引用データのJSONをXSLTでXML化する

さて、CSLの引用データを確認してみましょう。Zoteroの出力一覧に「Citation Style Language …」という文字列が見えます。ポチッとな……無事ダウンロードされました。

「export-data.json」が。


{
    "items": [
        {
            "id": "7646893/2E3MJB9A",
            "type": "book",
            "title": "スタイルシート開発の基礎",
            "publisher": "アンテナハウス株式会社",
            "publisher-place": "Tokyo",
            "event-place": "Tokyo",
            "ISBN": "978-4-900552-23-4",
            "language": "ja",
            "author": [
                {
                    "family": "アンテナハウス株式会社",
                    "given": ""
                }
            ],
            "issued": {
                "date-parts": [
                    [
                        2016,
                        5
                    ]
                ]
            }
        }
    ]
}

引用データそのものは文書レイアウトのような複雑な構造を持ちませんし、XML形式である必要はないですからね。とはいえXSLTでこのデータを扱うにはどこかの段階でXMLに変換する必要があります。幸いなことに2020年のXSLTはJSONだって簡単に扱えます。今回はJSONがXSLT3.0で扱えることを示します。

XSLT 3.0 (というよりXPath 3.1)ではmap、arrayという頼もしい機能が用意されていますが、今回は構造に登場するだけです。次のテンプレートでは、外部ファイルであるexport-data.jsonを読み込んでXMLとして表示します。unparsed-text()でテキストファイルとしてJSONを読み込み、読み込んだJSONをjson-to-xml()でXMLにします。


<xsl:param name="input" >export-data.json</xsl:param>     
<xsl:template name="xsl:initial-template">
      <xsl:copy-of select="json-to-xml(unparsed-text($input))"/>
</xsl:template>

結果のXMLを次に示します。

<?xml version="1.0" encoding="UTF-8"?><!--export-data.xml-->
<map xmlns="http://www.w3.org/2005/xpath-functions">
  <array key="items">
    <map>
      <string key="id">7646893/2E3MJB9A</string>
   <string key="type">book</string>
      <string key="title">スタイルシート開発の基礎</string>
      <string key="publisher">アンテナハウス株式会社</string>
      <string key="publisher-place">Tokyo</string>
      <string key="event-place">Tokyo</string>
      <string key="ISBN">978-4-900552-23-4</string>
      <string key="language">ja</string>
      <array key="author">
        <map>
          <string key="family">アンテナハウス株式会社</string>
          <string key="given"/>
        </map>
      </array>
      <map key="issued">
        <array key="date-parts">
          <array>
            <number>2016</number>
            <number>5</number>
          </array>
        </array>
      </map>
    </map>
  </array>
</map>

XML形式で出力せずに扱う方が便利なこともありますが、とりあえず今回のところは得られた引用データのXMLから一部を抜き取ってFOにしてみます。

<xsl:template match="j:string[@key='title']">
    <fo:inline font-family="sans-serif">『<xsl:value-of select="." />』</fo:inline>
</xsl:template>
<xsl:template match="j:map[@key='issued']">
    <xsl:apply-templates select="j:array[@key='date-parts']"/>
</xsl:template>
<xsl:template match="j:array[@key='date-parts']">
<fo:inline><xsl:value-of select="./j:array/j:number[1]" />年</fo:inline>
</xsl:template>
<xsl:template match="j:string[@key !='title']">
</xsl:template>

これをexport-data.xmlに適用します。かなり省略していますが、
export-data.xmlのtitledate-partsから年の値を取り出し、加工して出力できました。

<fo:inline font-family="sans-serif">『スタイルシート開発の基礎』</fo:inline><fo:inline>2016年</fo:inline>

CSLからXSLT、XSL-FOへの完全な変換まで到達予定でしたが、XPath3.1やXSLT3.0の機能を調べだしたら今回の記事に間に合わなくなったため、少し時間を空けて再挑戦したいところです。

*1 https://citationstyles.org/about/
*2 https://citationstyles.org/2010/03/22/citation-style-language-1-0/
*3 https://ja.wikipedia.org/wiki/Citation_Style_Language

関連記事

  1. Citation Style Languageの話(1)

Pages: 1 2 3 4 5 6 7 8 9 10 ... 201 202 203 Next