第58回「問52 スキャナの読取サイズよりも大きい書類を受領した場合、その書類を分割するなどしてスキャナで読み取ることでも差し支えないでしょうか。」

作成者:アンテナハウス株式会社 益田康夫
資 格:上級 文書情報管理士、簿記3級、行政書士
本ブログの記載内容は、公開日時点での法令等に基づいています。
その後の法令改定により要件が変わる可能性がありますので、最新の法令などをご確認下さい。

「問52 スキャナの読取サイズよりも大きい書類を受領した場合、その書類を分割するなどしてスキャナで読み取ることでも差し支えないでしょうか。」

回答

ディスプレイの画面及び書面に規則第3条第5項第6号の要件を満たし、整然とした形式かつ原稿と同程度に明瞭な状態で、速やかに出力することができれば、どのような入力方法でも差し支えありません。

規則第3条第5項第6号の要件 とは何でしょうか?下記引用をご覧ください。

 当該国税関係書類に係る電磁的記録の保存をする場所に当該電磁的記録の電子計算機処理の用に供することができる電子計算機、プログラム、映像面の最大径が三十五センチメートル以上のカラーディスプレイ及びカラープリンタ並びにこれらの操作説明書を備え付け、当該電磁的記録をカラーディスプレイの画面及び書面に、次のような状態で速やかに出力することができるようにしておくこと。

 整然とした形式であること。
 当該国税関係書類と同程度に明瞭であること。
 拡大又は縮小して出力することが可能であること。
 国税庁長官が定めるところにより日本工業規格Z八三〇五に規定する四ポイントの大きさの文字を認識することができること。

解説

 規則第3条第5項第2号イ及びハにおいて、国税関係書類を読み取るに当たっての要件として200dpi以上、赤・緑・青それぞれ256階調以上及び書類の大きさに関する情報を保存することを規定していますが(同条第6項に規定する国税関係書類の場合は、いわゆるグレースケールで保存することが規定されており、また、書類の大きさに関する情報を保存する要件はありません。)、その他は特に規定していませんので、1頁の書類が2頁にまたがるなど、分割して出力されることなく原稿と同程度の出力ができる保存方法として規則第3条第5項第6号の要件を満たしていれば、入力方法については問わないこととされています。
したがって、本来はディスプレイに出力する際にファイル等が分割されることなく整然とした形式で出力することが必要であり、また、仮にA3の書類であれば当然にA3が出力できるプリンタ及びA3サイズの用紙を備え付けるべきですが、たまたま備え付けられているプリンタの最大出力サイズより大きい書類を1枚受領したときは、スキャン文書と元の書類の両方を保存することで差し支えありません。

(注) 備え付けられているスキャナがA3サイズに対応していないからといって、国税関係書類を複写機などで縮小コピーしたものをスキャニングすることは、法第4条第3項に規定する国税関係書類に記載されている事項をスキャニングすることには当たりません。

 

――【広告】――
・アンテナハウスは、中小企業皆様のペーパレス経理への挑戦をサポートします!
・「ScanSave(スキャンセーブ)」は、証憑書類のスキャナ保存の要件確保用の
安心、低価格、短期導入可能なパソコン用スタンドアロンソフトです!

 ScanSave-Lite  (ソフト単体)適時入力専用  12万円
 ScanSave  (ソフト単体)業務サイクル+適時入力   45万円
 ScanSave
適時入力導入支援パック
適時入力専用
タイムスタンプ2,000個/月+スキャナix100+導入支援付き
 38万円~
 ScanSave
業務サイクル入力導入支援パック
業務サイクル+適時入力
タイムスタンプ2,000個/月+スキャナix500+適正事務処理要件コンサルティング+導入支援付き
 100万円~

・詳しくは、 https://www.antenna.co.jp/scansave/ をご覧ください。
・問合わせは、 sis@antenna.co.jp まで


PDF Tool API/PDF Driver APIのオンラインマニュアルとサンプル集を掲載中です

みなさん、こんにちわ。
本日は「夏至」。1年でいちばん昼がなが~い日ですね。
帰宅する時間もまだ明るくてわけもなくうれしい日々も今日までか・・・
しかも今日は大雨です。
地域によっては被害が大きくなっていて、心配です。

PDF Tool API、PDF Driver APIのページについて、ちょっとお知らせです。
まず、
 ・説明書のオンライン化
製品版/評価版に付けているAPIリファレンスやPDFの説明書をオンラインにしました。
それ以外の細々した補足的説明書も作成してアップロードしています。
見栄えがイマイチでまだまだこれから手をいれてもっときれいなページにしたいとは思っていますが・・・。

 PDF Tool API 説明書
PDF Driver API 説明書

そして、
 ・サンプル集
サンプルコードは製品版/評価版に付いていますが、実際に結果はどうなるの?、というあたりは気になりますよね。
コードとともに元ファイルや結果ファイルを掲載して、どういうことができるのかをイメージしていただけたら幸いです。
・・・などと言いながら、かんじんの掲載数がぜんっぜん少なくて、スミマセン。
鋭意努力中です。
「こんなサンプルを載せてほしい」「こういうページ作りだともっとわかりやすい」等々ございましたら、ぜひお知らせください!

 PDF Tool API サンプル集
 PDF Driver API サンプル集

 


XSLTを学ぶ (4) 式の構成部品としてのパスの使い方

前回[1]はパス(ロケーションパス)の構成法を学びました。続いてパスの使い方を調べてみます。

スタイルシートで重要な役割を果たす要素の一つにxsl:apply-templatesがあります。XSLT[2]の5.4 Applying Template Rulesを見ますと、xsl:apply-templatesの定義は次のようになっています。

<xsl:apply-templates
 select = node-set-expression
 mode = qname>
 <!– Content: (xsl:sort | xsl:with-param)* –>
</xsl:apply-templates>

select属性を省略すると、xsl:apply-templatesはカレントノードのすべての子供を処理します。select属性の値に式を記述することで、処理対象とするノードの集合を限定できます。この式はどのように評価されるのでしょうか?

XSLTの5.1 Processing Modelを読むと、ノードにmatchするテンプレート規則の中から、あるテンプレート規則が選択されると、テンプレート規則はそのノードをカレントノードとして起動されるとあります。

本書[3]には次のような例(2.18の一部)が出ています。

<xsl:template match=”body”>
 <fo:page-sequence master-reference=”main”>
  <fo:flow flow-name=”xsl-region-body”>
   <xsl:apply-templates select=”p”/>
  </fo:flow>
 </fo:page-sequence>
</xsl:template>

<xsl:template match=”p”>
 <fo:block>
  <xsl:apply-templates/>
 </fo:block>
</xsl:template>

最初のブロックのテンプレート規則(xsl:template)は、(要素ノード)bodyにmatchしています。従って、最初のブロックではbodyがカレントノードです。

XPath[4]の式は文脈ノードで評価されます。XSLTの4 Expressionsを見ますと、最も外側の式(ある式の一部でない式)は文脈を次のように取得します。

a. 文脈ノードはカレントノードから
b. 文脈ノードの位置は、カレントノードリストにおけるカレントノードの位置から
c. 文脈ノードの大きさは、カレントノードリストの大きさから

こうして、最初のxsl:apply-templatesのselect属性の値である式p(child::pの省略記法)の文脈ノードはbodyになることが分かります。こうしてselect属性によりbodyの子であるpを選択したノード集合を作ることになります。(bodyの子のpではない要素ノードや、bodyの兄弟p要素ノードは対象になりません)。

[1] XSLTを学ぶ (3) パスとは
[2] XSL Transformations (XSLT) Version 1.0
[3] 『スタイルシート開発の基礎』
[4] XML Path Language (XPath) Version 1.0

【広告】★AH Formatter XML関連出版物の紹介

次回:
XSLTを学ぶ(5)パターンの記述のためのパス

前回:
XSLTを学ぶ (3) パスとは

初回:
XSLTを学ぶ(1)XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う


XSLTを学ぶ (3) パスとは

現在、5月にPOD出版した『スタイルシート開発の基礎』[1]を使って、毎週、社内で勉強会をしています。先週は第2回目でしたが、3.4.1 パス(p.21)の箇所で人によっては結構ひっかかりました。

本書はXMLをXSL-FOで本にするということがテーマなので、XSLTの基本説明はさっと流しています。詳しいことはあとで、実際に使えれば良いという実践的な指導書ともいえます。でもわからないことは詳しく調べてみるのも面白いものです。ということで、このあたりを少し調べてみました。

まず、パスについて調べてみます。XPath仕様[2]を見ますと、パス(ロケーションパス)の生成規則では、次のように絶対パスと相対パスの2種類があります。

LocationPath ::= RelativeLocationPath | AbsoluteLocationPath

絶対パスは次のように相対パスの先頭が’/’(ルートノード)になっているものです。

AbsoluteLocationPath ::= ‘/’ RelativeLocationPath? | AbbreviatedAbsoluteLocationPath

相対パスは次のように単一のステップまたは複数のステップを’/’で結合して構築します。

RelativeLocationPath ::= Step | RelativeLocationPath ‘/’ Step | AbbreviatedRelativeLocationPath

‘/’の意味が場所によって違うことで混乱しがちですが、先頭に’/’があったら、それはルートノードを意味し、ステップの間の’/’は結合用オペレータです。

ステップの生成規則は次のようになっています。

Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep

つまり、ステップの記述方法には省略記法(AbbreviatedStep)と軸指定から始める書き方(AxisSpecifier NodeTest Predicate*で構成する)の二通りがあります。本書の3.4.1パスには省略記法、3.4.2軸には軸指定から始める記法の例が載っています。

前回([4])の図のp要素を含むパスは、省略記法では

絶対パス:/doc/body/p
相対パス:body/p

という二種類の書き方があります。これだけですと、WebのURLなどのパスの書き方と似ています。しかし、軸指定から始める書き方では、次のようになり違いが明確です。

絶対パス:/child::doc/child::body/child::p
相対パス:child::body/child::p

【注意】pを含む相対パスは、起点の取り方により、上記以外にもいろいろ書けます。

属性ノードも指定できます。軸から書くとき、例えば次のようになります。

絶対パス:/child::doc/child::body/child::p/attribute::s
相対パス:child::body/child::p/attribute::s

attribute:: は省略記法では@になります。

テキストノードは次のように指定できます。

絶対パス:/child::doc/child::body/child::p/child::text()
相対パス:child::body/child::p/text()

すべての子要素ノードを表すときは次のようにも書けます。

絶対パス:/child::doc/child::body/child::*
相対パス:child::body/child::*

ここで述べたロケーションパスは式の構成要素となります(本書3.4.4)。他にパタン(本書3.7.1)としてのパスもあります。本書ではあまり詳しく書いてありませんが[4]、Micheal Kayさんの本によれば、第一と第二ではパスの意味合いが違うようです。もう少し詳しく調べてみます。

[1] 『スタイルシート開発の基礎』
[2] XML Path Language (XPath) – W3C
[3] XSLTを学ぶ (1) XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う
[4] XSLTを学ぶ (2)ノードツリーとノードの親子、子孫関係
[5] なんども書きますが、本書はXSLTやXPathそのものを詳しく学ぶ本ではありません。

【ご注意】筆者はXSLTを勉強中です。ここに書いた内容は、資料を調べながら正確を期していますが、間違いを含んでいる可能性もありますので、ご注意ください。

次回:
XSLTを学ぶ(4)式の構成部品としてのパスの使い方

前回:
XSLTを学ぶ (2) ノードツリーとノードの親子、子孫関係

初回:
XSLTを学ぶ(1)XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う


設定を変えてPDFを作成してみよう!その6:PDFの開き方 2

PDFには「開き方」を設定することができます。前回の「PDFでプレゼン資料の作成」では自分で使うときに便利な設定としてPDFの「開き方」の利用例をご紹介しました。

今回は作成したPDFをほかの人に見てもらう時に、どのような状態で表示されると喜ばれるか、見てもらいやすいかを考えた「開き方」の設定の例をご紹介します。

たとえば、何かの取扱説明書やページ数の多い章立てされたような文書の場合。
PDFを開いたときにどのような状態になっていると喜ばれそうでしょうか。

設定は読んでもらう文書の内容、どのような方に読んでもらうか、どのような環境で読んでもらうかなど、いろいろな条件で変わってきますが、たとえば次のようなことに配慮してみます。

  1. 知りたい機能の説明、あるいは興味のある内容を参照しやすいように「しおり」(しおりパネル)を表示させる。
    (PDFの「しおり」は文書内の移動のためのリンク一覧のようなもので、見出しなどをしおりに設定しておくことで、しおりをクリックすると該当のページに移動して表示するという便利な機能です。)
  2. パソコンの画面で読みやすいように1ページをウィンドウの幅に合わせて表示させる。
  3. マウスの操作でスクロールしながら読みやすいようにページが連続して表示するようにする。
Acrobat しおり表示状態

Acrobat しおり表示状態

「開き方」の設定は簡単!

では、実際にこれら3つの状態にできるように設定をしてみます、、、が、一点注意することがあります。 続きを読む


第57回「問49~51 規則第3条第5項第2号ニに規定する訂正又は削除の履歴の確保(ヴァージョン管理)の要件」

作成者:アンテナハウス株式会社 益田康夫
資 格:上級 文書情報管理士、簿記3級、行政書士
本ブログの記載内容は、公開日時点での法令等に基づいています。
その後の法令改定により要件が変わる可能性がありますので、最新の法令などをご確認下さい。

問49 市販のヴァージョン管理ソフトを使用すれば、規則第3条第5項第2号ニに規定する訂正又は削除の履歴の確保(ヴァージョン管理)の要件を満たしているといえるのでしょうか。

問50 具体的にどのようなシステムであれば、訂正又は削除の履歴の確保の要件を満たしているといえるのでしょうか。

問51 訂正削除ができないシステムでもよいのでしょうか。

上記の順番で確認するよりも先に51から確認した方が、本質が見えてきます。

回答

画像データを全く変更できないシステムであり、かつ、保存されているデータスキャニング直後のデータであることを証明できるシステムであれば、スキャナ保存における訂正又は削除の履歴の確保の要件を満たしているものとして取り扱われます。

これで皆さんお分かりですね。

そうですスキャナ保存における訂正又は削除の履歴の確保」の対象は、スキャンした画像データそのものであり、検索用の情報や相互関連性で使用する伝票番号等はこの対象で無いのです。

――【広告】――
・アンテナハウスは、中小企業皆様のペーパレス経理への挑戦をサポートします!
・「ScanSave(スキャンセーブ)」は、証憑書類のスキャナ保存の要件確保用の
安心、低価格、短期導入可能なパソコン用スタンドアロンソフトです!

 ScanSave-Lite  (ソフト単体)適時入力専用  12万円
 ScanSave  (ソフト単体)業務サイクル+適時入力   45万円
 ScanSave
適時入力導入支援パック
適時入力専用
タイムスタンプ2,000個/月+スキャナix100+導入支援付き
 38万円~
 ScanSave
業務サイクル入力導入支援パック
業務サイクル+適時入力
タイムスタンプ2,000個/月+スキャナix500+適正事務処理要件コンサルティング+導入支援付き
 100万円~

・詳しくは、 https://www.antenna.co.jp/scansave/ をご覧ください。
・問合わせは、 sis@antenna.co.jp まで


XSLTを学ぶ (2) ノードツリーとノードの親子、子孫関係

前回([1])はXPathでは7つのノードが定義されている、と説明しました。このうち重要なのは、ルートノード、要素ノード、属性ノード、テキストノードです。この4種類のノードについてもう少し詳しく見てみましょう。

例えば次のようなXML文書があったとします。このXMLの文書要素はdocです。

<!–?xml version=”1.0″?–>
 <doc>
  <body>
   <p s=”man1″>Hello! How are you?</p>
   <p s=”man2″>I am fine, thank you.</p>
  </body>
 </doc>

このXMLをXPathのノードツリーとして表しますと次のようになります。
XSLT

ノードには親子(parent, child)になるものがあります。ノードツリーで実線でしめした箇所が親子関係になります。子孫(descendant)ノードとはあるノードの子供と子供の子孫ノードです。

兄弟(sibling)ノードは同じ親の子供ノードです。

親になれるノードはルートノードと要素ノードのみです。子供になれるノードは要素ノードとテキストノードです。ルートノードは最上位ですので親をもちません。逆にテキストノードは最下位ですので子を持ちません。

やっかいなのは属性ノードです。要素には関連する属性があります。要素ノードはそれらの属性ノードの親です。しかし、属性ノードは要素の子ではないと規定されています。また属性ノードは子を持ちません。

属性ノードとして扱われるのは、要素に明示的に指定されているもの、または、DTDでデフォルト値が明示的に規定されているものです。DTDで値が#IMPLEDになっていて要素に指定されていない属性や、xml:lang、xml:spaceのようなある要素に指定されているとき、その子孫に継承することになっている属性は、その子孫では属性ノードとして扱われません。

テキストノードは、要素の内容の文字列をできるだけ長くなるように結合したものです。従って、テキストノードには、直前・直後の兄弟はありません。

要素ノードの文字列値とは、要素ノードの子孫であるテキストノードを、XML文書に現れる順に結合したものです。ルートノードの文字列置はXML文書のすべてのテキストです。

[1] XSLTを学ぶ (1) XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う
[2] XPath データモデル

★AH Formatter XML関連出版物の紹介

次回:
XSLTを学ぶ(3)パスとは

初回:
XSLTを学ぶ(1)XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う


第56回 「問48 タイムスタンプは「スキャナで読み取った後24時間以内」に付せばよいこととされていましたが、この取扱いは改正後でも同様となりますか。」

作成者:アンテナハウス株式会社 益田康夫
資 格:上級 文書情報管理士、簿記3級、行政書士
本ブログの記載内容は、公開日時点での法令等に基づいています。
その後の法令改定により要件が変わる可能性がありますので、最新の法令などをご確認下さい。

問48 平成27年度の税制改正前の電子帳簿保存法取扱通達4-27(読み取る際の意義)が廃止されています。この通達では、タイムスタンプは「スキャナで読み取った後24時間以内」に付せばよいこととされていましたが、この取扱いは改正後でも同様となりますか。

これも良く聞かれる要件ですね。

回答(下記)を文理通りに解釈すると「スキャナで読み取った際に」タイムスタンプしなければならない、大変窮屈なものになります。落ち着いて解説まで読み込んでいきましょう。

回答

平成27年度の税制改正後のスキャナ保存の要件を適用する場合には、当該通達は既に廃止されているため、適用はなく、タイムスタンプについては、国税関係書類をスキャナで読み取った際にタイムスタンプを付す必要があります。

解説

平成27年度の税制改正前の電子帳簿保存法取扱通達4-27(読み取る際の意義)については、スキャナで読み取った際に一の入力単位ごとの電磁的記録の記録事項に電子署名を行うこととされ、タイムスタンプは個々の国税関係書類をスキャナで読み取った日(電子署名を行った日)を特定するために付すものとの位置付けでした。
 旧通達4-27は、このタイムスタンプを付す場合には、スキャナで読み取った後24時間以内であっても、電子署名によりスキャナで読み取った日を特定することができることを踏まえ、これを前提に制定された通達でした。
また、電子署名に係る「スキャナで読み取る際」の意義などについて、従前は、原則として国税関係書類をスキャナで読み取り、正しくスキャニングされていることを確認した都度、電子署名を行うこととしていたところです。
今般、平成27年度の税制改正によりこの電子署名の要件が不要とされ、タイムスタンプを付す場合の「スキャナで読み取る際」についても、改正前の電子署名と同様に、原則として国税関係書類をスキャナで読み取り、正しくスキャニングされていることを確認した都度、タイムスタンプを付すことが必要となります(規則35二ロ)。

如何でしょうか?
やはり文理通りだと窮屈ですね。
この点は、私見ですが、法令の趣旨は、電子化された文書は出来る遅滞なくタイムスタンプを付与して
改善検出の要件を担保すべきものです。要するにスキャナで読み取った当日内にタイムスタンプを付与
出来ておれば要件が確保できると考えても差支えないでしょう。なお、対象書類データへのアクセス権や
証跡など運用上の管理が合わせてあることが望ましいです。

 

 

 

――【広告】――
・アンテナハウスは、中小企業皆様のペーパレス経理への挑戦をサポートします!
・「ScanSave(スキャンセーブ)」は、証憑書類のスキャナ保存の要件確保用の
安心、低価格、短期導入可能なパソコン用スタンドアロンソフトです!

 ScanSave-Lite  (ソフト単体)適時入力専用  12万円
 ScanSave  (ソフト単体)業務サイクル+適時入力   45万円
 ScanSave
適時入力導入支援パック
適時入力専用
タイムスタンプ2,000個/月+スキャナix100+導入支援付き
 38万円~
 ScanSave
業務サイクル入力導入支援パック
業務サイクル+適時入力
タイムスタンプ2,000個/月+スキャナix500+適正事務処理要件コンサルティング+導入支援付き
 100万円~

・詳しくは、 https://www.antenna.co.jp/scansave/ をご覧ください。
・問合わせは、 sis@antenna.co.jp まで


設定を変えてPDFを作成してみよう!その6:PDFの開き方

PDFには「開き方」を設定することができます。

ところで「開き方」とは何でしょう?
これは、PDFの文書をダブルクリックなどで表示する際、どのような状態で表示させるかといったものです。

具体的には表示する倍率や単ページまたは連続ページか、見開き表示かどうか、しおりを表示するかどうか、何ページ目を最初に表示するか、フルスクリーンで表示するかなどを設定できます。

目的がはっきりしていないと、なかなか利用しない機能ですが、知っているといろいろ活用できますのでご参考にしていただければ幸いです。

但し、これらは表示するビューア(リーダー)などのアプリが、この「開き方」に対応している必要があります。パソコン用の Adobe Acrobat/Reader であれば基本的には対応していますが、それ以外のビューアの場合、対応していないまたは一部対応していない設定がありますのでご注意ください。(※特にAndroidやiOSのビューアアプリでは対応していないものが多いです。)

PDF作成ドライバー『Antenna House PDF Driver』は、PDFの作成時にこのPDFの「開き方」を設定して出力することができます。

PDFでプレゼン資料の作成

続きを読む


XSLTを学ぶ (1) XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う

先月『スタイルシート開発の基礎』[1]という本を出版しました。この本は、副題に「XMLとFOで簡単な本を作ってみよう」とあるとおりXSLTの実践学習本です。現在、弊社の社内でも、初心者が集まって、この本を使ってXSLTの学習をはじめたところです[2]。私もメンバーの一人です。

『スタイルシート開発の基礎』のはじめにには「XSLT/XPathの知識はない」人が本書の対象とあります。私もXSLTを本格的に学ぶのは初めてですので、本書の想定読者にあてはまりそうです。

素直に読めば、この本だけで理解できるのかもしれませんが、折角ですので、他の参考資料や仕様書をにらみ合わせて楽しみながらお勉強。そこで、折角学んだことを整理して、紹介したいと思います。すでにご存知の方には、初歩的なお話と思いますが、『スタイルシート開発の基礎』の補足として役立てていただけるかもしれません。

資料としては次を見ています。

・『XSLTバイブル』(Michael Kay著、インプレス社、2002年1月発行)
・XSL Transformations (XSLT) Version 1.0(W3C Recommendation 16 November 1999)[3]
・XML Path Language (XPath) Version 1.0(W3C Recommendation 16 November 1999, revised 7 September 2015)[4]

さて、今回勉強し始めて知ったのですが、整形式XMLのツリーモデルとXSLT/XPathのツリーモデルはまったく違うんですね。

XML1.0では、整形式XML文書はルートが文書の実体ツリーの起点であり、XMLプロセサはルートから処理を始めます。さらに見ますと、ルートまたは文書要素と呼ばれる要素が唯一あるとされています。ルート要素は他の要素の内容になりません(つまり親を持ちません)が、他の要素は親を持ちます[5]。整形式XML文書はルート要素(文書要素)を起点とする要素のツリー構造になります。

しかし、XPathのデータモデルは、ノードという概念が中核です。ノードの種類として次の7つがあります。
・ルートノード(root nodes)
・要素ノード(element nodes)
・テキストノード(text nodes)
・属性ノード(attribute nodes)
・名前空間ノード(namespace nodes)
・処理命令ノード(processing instruction nodes)
・コメントノード(comment nodes)

原文でroot nodesと複数形になっているのが気になりますが、XPath仕様の5.1 ルートノード(Root Node)には、「ルートノードはツリーのルートであり」、「文書要素ノードはルートノードの子である」、「ルートノードの子供として、処理命令、処理命令のためのコメント、プロローグの中の文書要素の後のコメントノードがある。」とあります。

また、XSLT仕様の3 データモデル(Data Model)を見ますと、XSLTでは、ソース文書、スタイルシート、結果文書に同じデータモデルを使います。それらはXPathのデータモデルを基本として、少しだけ変更したものです。

・整形式のソースXML文書を読み込んでソースツリーを構築するときは、ルートノードの下にテキストノードはなく、唯一の要素ノードを子として持ちます。また、DOMなどの他の方法でソースツリーを作るときは、ソースツリーに対する制約は結果ツリー同様に緩められます。

・文書スタイルシートのツリーを構築するときは処理命令とコメントノードを無視します。

・結果ツリーでは、ルートノードへの制約が緩められており、子供として要素ノードを含む、任意のノードの系列をもつことができます。これにより、整形式XMLでない出力を作ることができます。

ですので、たぶん、XSLTでは整形式でないようなソースXMLでも処理できそうです[5]

[1] 『スタイルシート開発の基礎』
[2] アマゾンPODの便利な利用法
[3] XSL Transformations (XSLT) Version 1.0
[4] XML Path Language (XPath) Version 1.0
[5] Extensible Markup Language (XML) 1.0 (Fifth Edition) 2 Documents
[6] 余談です。『スタイルシート開発の基礎』の著者(神様)に、Michael Kayさんの本にそんなことが書いてある、と話しましたら、仕様書のどこに書いてあるかを示せ! と言われました。それは、3.1 Root Node Childrenの二つ目の段落の後半のセンテンスにあります。

次回:
XSLTを学ぶ(2)ノードツリーとノードの親子、子孫関係


Pages: Prev 1 2 3 ... 95 96 97 98 99 100 101 ... 224 225 226 Next