XSLTを学ぶ (10)式によるノード集合の作成、ノード集合の和集合、フィルター式

前回[1]の定義[19]にあるようにロケーションパスをパス式として使うことができます。そのときパス式はロケーションパスによって選択したノードの集合を返します。

ノードの集合は、’|’オペレータで和集合にできます(前回の定義[18])。定義[18]だけでは分かりませんが、XPath仕様書[2]には「オペランドはノード集合でなければならない」とされています。

以上により、の中では、ロケーションパスでノード集合を作り、ノード集合の和集合を作ることができます。

定義[19]では、パス式の生成方法にFilterExpr(フィルター式)を使う方法もあります。フィルター式には、FilterExprの後に述部(Predicate)を付けるものがあります。このときの述部は「ロケーションパスで使われるときと同様に式をフィルターするために使われる。フィルターされる式がノード集合にならなければエラーとなる。述部は、ノード集合をchild軸に関してフィルターする」とされています。

つまり、パス式がFilterExpr Predicateで生成されるとき、FilterExprはノード集合でなければなりません。

FilterExprは基本式(PrimaryExpr)で構成されます。基本式の中でノード集合を生成できるのは、VariableReference(変数参照)、()で囲った式、FunctionCallです。

[15] PrimaryExpr ::= VariableReference
| ‘(‘ Expr ‘)’
| Literal
| Number
| FunctionCall

前回述部に二種類あることに注意しましたが、この違いは()で囲った式と組み合わせると明確になります。

XML文書中で、例えばpが要素ノードであるとき、パス式p(child::p)自体は基本式ではありませんが、(p)は基本式です。

述部[]と組み合わせたとき、次の二種類となります。
(1) p[1]はステップであり、ロケーションパスです。
(2) それに対して、(p)[1]はフィルター式です。

この場合は違いは明確ではありませんが、次のような場合は違いが明確になります。

preceding::foo[1] と(preceding::foo)[1]の比較

preceding軸の定義は次のようになっています。「起点ノードと同じ文書の中で、文書順で起点ノードの前にあるすべてのノードを含みます。但し、先祖と属性ノードと名前空間ノードは除外します。」(XPath 2.2 Axes)

軸には文書順の軸と、逆文書順の軸があります。起点ノードと起点ノードよりも文書の中で後のノードを含む軸は文書順の軸です。起点ノードと起点ノードよりも文書の中で前方のノードを含む軸は逆順の軸です。preceding軸は、逆順の軸に属します(XPath 2.4 Predicates)。

ノード集合のメンバーの軸に関する近接位置(proximity position)とは、文書順の軸ではメンバーを文書順に並べたときの順番、逆順の軸では文書で出現する順序の逆に並べたときの順番です。

そして、述部[]はノード集合を絞り込んで新しいノード集合を作ります。述部の中の式は、ノード集合の各ノードを起点のノードとし、近接位置を文脈位置として評価します。評価結果が真であれば、そのノードは新しいノード集合に含まれます。

そこで、preceding::foo[1] は起点ノードの先行ノードであるfoo要素ノードを文書の逆順にたどり、そのときの1番目のfoo要素ノードを選択します。

(preceding::foo)[1] は[1]に適用する軸はchild軸なので先行ノードであるfoo要素の集合の最初のノードを選択します[3]

[1] XSLTを学ぶ(9)ステップの文法を追求する-述部(Predicates)と式
[2] XML Path Language (XPath) Version 1.0
[3] 3.3 Node-setsには、このように書かれています。ちょっと強弁の印象がありますが。

【広告】
Formatter(XML)関連技術書、PDF関連書籍ご紹介

次回:
XSLTを学ぶ (11)論理値(Boolean)と関連する基本的な関数のいくつか

前回:
XSLTを学ぶ(9)ステップの文法を追求する-述部(Predicates)と式

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




瞬簡PDF 編集 2024
かんたん操作でPDFを自由自在に編集


瞬簡PDF 書けまっせ 2024
PDFに文字が書ける! 入力欄を自動認識

第62回「問56 妻と2人で事業を営んでいる個人事業者ですが、規則第3条第5項第4号イの「各事務について、それぞれ別の者が行う体制」とは、具体的には、どのように体制を整備したらよいのでしょうか。」

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

「問56 妻と2人で事業を営んでいる個人事業者ですが、規則第3条第5項第4号イの「各事務について、それぞれ別の者が行う体制」とは、具体的には、どのように体制を整備したらよいのでしょうか。」 

本問いのポイントは、「それぞれ別の者が行う体制」です。

社内の不正な経理を防止するにはダブルチェックが重要ですよね!
よって厳しい要件のように思わないでふつうに対応しましょう!

回答

具体的な体制については事業規模等を踏まえ、個々に検討していく必要がありますが、最低限、国税関係書類をスキャナで読み取って保存する際には、スキャナで読み取った画像が紙の記載事項や色調と同等であることを確認し、タイムスタンプを付す事務とこれ以外の事務について、それぞれ別の者が行う体制を整備することが必要です。

解説

平成27年度の税制改正において、規則第3条第5項第4号(適正事務処理要件)を新たに設けることにより、事務担当者間でチェック機能を働かせる仕組み(担保措置)が講じられました。
この要件のうち、同号イの「各事務について、それぞれ別の者が行う体制」とは、具体的には、各事務に関する職責をそれぞれ別の者にさせるなど、明確な事務分掌の下に相互にけんせいが機能する事務処理の体制がとられていることが必要とされるものです。
事業規模の小さな事業者にとっては、1人で全ての事務を行うことが可能な場合もありますが、1人で全ての事務を行うこととなると、紙段階で行われる改ざんについてスキャナで読み取った画像を同一人が確認することとなるため、この要件を満たさないこととなります。
このため、「各事務について、それぞれ別の者が行う体制」については、最低でも、スキャナで読み取った画像が紙の記載事項や色調と同等であることを確認し、タイムスタンプを付す事務とこれ以外の事務について、それぞれ別の者が行う体制を整備することが必要となります。

――【広告】――
・アンテナハウスは、中小企業皆様のペーパレス経理への挑戦をサポートします!
・「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 編集 2024
かんたん操作でPDFを自由自在に編集


瞬簡PDF 書けまっせ 2024
PDFに文字が書ける! 入力欄を自動認識

瞬簡PDFシリーズのマニュアルのWeb公開と冊子の販売

Webマニュアルの公開

瞬簡PDFシリーズ製品では、ユーザーズマニュアルやヘルプを、PDF形式やWindowsヘルプ形式でご利用いただけますが、いずれも製品をインストールした後に表示できるようになっています。
ご購入前や製品をインストールしていないパソコン、スマホなどから、簡単にマニュアルを確認する方法がこれまでありませんでした。
そこで、Webから手軽にマニュアル(ユーザーズマニュアル)をご覧いただけるよう準備を進めており、現在、下記の3製品を公開しております。

瞬簡PDF 書けまっせ 6 ユーザーズマニュアル
https://www.antenna.co.jp/kpd/pdfwritemanual_web/index.html

瞬簡PDF 作成 7 ユーザーズマニュアル
https://www.antenna.co.jp/SPD/skpdf7_webpage/index.html

瞬簡PDF 編集 6 ユーザーズマニュアル
https://www.antenna.co.jp/pdfedit/manual/index.html

Webマニュアルは、すでに『AH Formatter』や『AH PDF Tools API』などシステム製品などでも公開しており、こちらも順次拡大予定です。

紙のマニュアルも販売中

瞬簡PDF 作成 7 ユーザーズマニュアル

紙のマニュアルを読みたいというご希望も多くいただいております。
そこで、『瞬簡PDF 作成 7』のユーザーズマニュアルを冊子(紙の本)でお求めいただけるようになりました。

AmazonのPOD(プリントオンデマンド)サービス
『瞬簡PDF 作成 7 ユーザーズマニュアル オンデマンド(ペーパーバック)』
https://www.amazon.co.jp/dp/4900552240/

製品インストール後に利用できるPDFマニュアルはA4の用紙にプリンターで印刷することを想定しています。
POD版のマニュアルは、冊子用に最適化した版面、誌面レイアウトになっています。
現在は『瞬簡PDF 作成 7』だけですが、ご要望に応じてこちらも順次拡大予定です。

なお、この『瞬簡PDF 作成 7 ユーザーズマニュアル オンデマンド(ペーパーバック)』は、弊社の書籍編集・制作Webサービス『CAS-UB』で執筆し、AmazonのPOD用に出力したものです。PDFマニュアル版、POD版をひとつの原稿から生成できます。

※【ご注意】『瞬簡PDF 作成 7 ユーザーズマニュアル オンデマンド(ペーパーバック)』には、PDF変換ドライバ『Antenna House PDF Driver』の操作方法や設定方法についての記載はございませんので、ご注意ください。Webマニュアルはこちら(PDF Driver 利用ガイド)をご覧ください。




瞬簡PDF 書けまっせ 2024
PDFに文字が書ける! 入力欄を自動認識


瞬簡PDF 変換 2024
PDFをOffice文書へ高精度変換

PDF の加工・編集ライブラリ

PDF の加工・編集ライブラリ
『Antenna House PDF Tool API 』 のご紹介!!

こんにちは!皆さんお元気ですか~
毎日ジメジメした日が続いて体も重くて嫌になりますが。。(梅雨のせいではない??)
梅雨のこの時期、梅干がとっても体に良いそうです。
疲労回復はもちろん、毒消しなどの効果もあるそうなので、 私も酸っぱいのを我慢して毎日1粒食べています。^^
皆さんも良かったら試してみて下さいね!

さてさて、 今日は PDFToolAPI という製品をご紹介しようと思います。
この製品は PDF ファイルの編集や加工、情報取得を行う アプリケーション開発用のライブラリです。

♪  データ流出の防止(墨消し処理)
♪  複数の PDF ファイルを一つに結合
♪  画像付き PDF ファイルを軽量化
♪  必要なページだけ抽出
♪  セキュリティ設定によりファイル保護
♪  Web 表示用に最適化、透かし( 色透かし) 挿入、などなど。。

その他いろいろ機能があるので、 ぜひ一度弊社のホームページを覘いてみて下さい。
https://www.antenna.co.jp/ptl/

評価版のお申し込みはこちら。
https://www.antenna.co.jp/ptl/trial.html

では今日はこのへんで~
ばいなら。。




瞬簡PDF 書けまっせ 2024
PDFに文字が書ける! 入力欄を自動認識


瞬簡PDF 変換 2024
PDFをOffice文書へ高精度変換

ボーナスキャンペーン実施中です!!

梅雨明けが待ち遠しいですね。
アンテナハウスオンラインショップでは景気よくボーナスキャンペーンを行っています。
期間は7月29日の17時までです。
通常の価格よりもお求めやすい価格になっていますのでぜひこの機会にご購入下さい。
ボーナスキャンペーンは、オンラインショップのトップページのキャンペーンバナーをクリックして下さい。
または、こちらをご覧ください。




アウトライナー
PDFを解析して しおり・目次を自動生成


瞬簡PDF 作成 2024
ドラッグ&ドロップでPDF作成

XSLTを学ぶ(9) ステップの文法を追求する-述部(Predicates)と式

第3回[1]からパスの文法を調べてきました。パスの重要な構成要素にステップがあり、ステップ(省略)は軸、ノードテスト、述部(オプションなので必須ではない)から構成されることを調べました。

ステップの最後の構成部品はオプションの述部です。第6回[2]で見ましたが、述部はを[]で囲った形式です。

式とはどんなものでしょうか? まず、XPathの式の生成規則[3]をトップから辿ってみます。

スタートは定義の[14]ですが、式Exprとは、OrExprです。[21]orExprはAndExprを’or’でつなげたものです。そして、[22]AndExprとは、EqualityExprを’and’でつなげたものです。[23]EqualityExprは、RelationalExprを’=’でつなげたものまたは’!=’でつなげたもの。[24]RelationalExprは、AdditiveExprを'<‘ ‘>”<=’ ‘>=’でつなげたもののようです。つまり、このあたりまでは、式はAdditiveExpr(加算式)の論理演算ということになります。

[14] Expr ::= OrExpr
[21] OrExpr ::= AndExpr | OrExpr ‘or’ AndExpr
[22] AndExpr ::= EqualityExpr | AndExpr ‘and’ EqualityExpr
[23] EqualityExpr ::= RelationalExpr
| EqualityExpr ‘=’ RelationalExpr
| EqualityExpr ‘!=’ RelationalExpr
[24] RelationalExpr ::= AdditiveExpr
| RelationalExpr ‘<‘ AdditiveExpr | RelationalExpr ‘>’ AdditiveExpr
| RelationalExpr ‘<=’ AdditiveExpr | RelationalExpr ‘>=’ AdditiveExpr

ということで、さらにAdditiveExprとは何かを見てみます。[25]ではAdditiveExprは、MultiplicativeExprを’+’または’-‘でつなげたものです。

[25] AdditiveExpr ::= MultiplicativeExpr
| AdditiveExpr ‘+’ MultiplicativeExpr
| AdditiveExpr ‘-‘ MultiplicativeExpr

[26]ではMultiplicativeExprとは、UnaryExpr(単項式)、またはMultiplicativeExprにUnaryExprを掛けた(’*’)、またはMultiplicativeExprをUnaryExprで割り算(’div’)、剰余算(’mod’)したものです。
[26] MultiplicativeExpr ::= UnaryExpr
| MultiplicativeExpr MultiplyOperator UnaryExpr
| MultiplicativeExpr ‘div’ UnaryExpr
| MultiplicativeExpr ‘mod’ UnaryExpr
[34] MultiplyOperator ::= ‘*’

UnaryExprは、UnionExprまたはその前にマイナス記号(’-‘)をつけたもの。

[27] UnaryExpr ::= UnionExpr | ‘-‘ UnaryExpr

UnionExprは、ひとつのPathExpr(パス式)、またはそれを’|’で結合したものです。

[18] UnionExpr ::= PathExpr| UnionExpr ‘|’ PathExpr

PathExpr式は、LocationPath(ロケーションパス)、またはFilterExprまたは、FilterExprと相対ロケーションパスを’/’、’//’ で結合したものです。

[19] PathExpr ::= LocationPath
| FilterExpr
| FilterExpr ‘/’ RelativeLocationPath
| FilterExpr ‘//’ RelativeLocationPath

ロケーションパスについては第3回[2]ですでに学びましたが、XMLツリーのノードを選択するものです。ノードの選択結果はノードの集まり(ノード集合)ですが、これに対して、掛け算(’*’)、割り算(’div’)、剰余算(’mod’)、足し算(’+’)、引き算(’-‘)、比較などの演算をするのは少し不思議な気もします。これは後ほど調べてみることにします([5])。

FilterExprの方は、PrimaryExprまたはPrimaryExprに述部(Predicate)を付けたものとなります。ここに出てくる述部はFilterExpr Predicateのように使われますが、ステップの中で出てくる述部の使われ方はAxisSpecifier NodeTest Predicate*です。この2種類の述部の使われ方の違いはなんでしょうか? これも後ほど調べてみましょう([4])。

PrimaryExprは、VariableReference(変数参照)、式を()で囲ったもの、リテラル、数値、FunctionCall(関数呼び出し)のどれかです。ですので、式には数置の四則演算も表現したものも含まれます(よく知っている初歩的な数式も含まれるということで一安心です)。

[20] FilterExpr ::= PrimaryExpr
| FilterExpr Predicate
[15] PrimaryExpr ::= VariableReference
| ‘(‘ Expr ‘)’
| Literal
| Number
| FunctionCall

最も単純なケースでは、一つの数値(Number)だけでも式となります。例えば、次のように下から辿ってみます。
(1) PrimaryExprがNumber:100
(2) FilterExprがPrimaryExpr:100
(3) PathExprがFilterExpr:100
(4) UnionExprがPathExpr:100
(5) UnaryExprがUnionExpr :100
(6) MultiplicativeExprがUnaryExpr:100
(7) AdditiveExprがMultiplicativeExpr:100
(8) RelationalExprがAdditiveExpr :100
(9) EqualityExprがRelationalExpr :100
(10) AndExprがEqualityExpr:100
(11) OrExprがAndExpr:100
(12) ExprがOrExpr:100

ということで、述部に[100]と書くことができます。

まとめますと、述部([]内)にはを書きますが、式としてはロケーションパスを書くこともできますし、また、数値、変数、関数呼び出し、数式を書くこともできる、ということになります。

途中で、いろいろわからない言葉が出てきていますので、次回以降、もう少し詳しく調べてみます。

[1] XSLTを学ぶ (3) パスとは
[2] XSLTを学ぶ (6) ステップの文法を追求するの[8]、[9]式
[3] 3 Expressions
[4] 次回(第10回)のpreceding::foo[1] と(preceding::foo)[1]の比較 の項を参照してください。
[5] ノード集合の論理演算、比較演算については第11回を参照してください。

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

次回:
XSLTを学ぶ (10)式によるノード集合の作成、ノード集合の和集合、フィルター式

前回:
XSLTを学ぶ(8)ステップの文法を追求する-NodeTest

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




瞬簡PDF 作成 2024
ドラッグ&ドロップでPDF作成


HTML on Word
WebページをWordで作る!

電子帳簿保存法4条3項「スキャナ保存」制度を無料で学習できるブログの紹介

電子帳簿保存法4条3項「スキャナ保存」制度を無理なく学習頂けるブログのご紹介です。

税務署への申請方法や「スキャナ保存」導入メリットやデメリットもしっかり踏み込んで書いています。

https://blog.antenna.co.jp/ILSoft2/

よりご覧ください。

最近のブルグタイトルは
第61回「問55 1人では、規則第3条第5項第4号(適正事務処理要件)イ及びロに規定する要件を満たすことはできないのでしょうか。」
です。

是非ご覧ください。




瞬簡PDF 変換 2024
PDFをOffice文書へ高精度変換


アウトライナー
PDFを解析して しおり・目次を自動生成

XSLTを学ぶ (8) ステップの文法を追求する-NodeTest

前回は軸について調べましたので、今回はNodeTestを調べてみます。XPath仕様では、NodeTestを次のように規定しています[1]

[7] NodeTest ::= NameTest | NodeType ‘(‘ ‘)’ | ‘processing-instruction’ ‘(‘ Literal ‘)’
[37] NameTest ::= ‘*’ | NCName ‘:’ ‘*’ |QName
[38] NodeType ::= ‘comment’|’text’|’processing-instruction’|’node’

まず主ノードタイプを次のように定義します。ステップの文法では軸の指定に続いてNodeTestを記述します。NodeTestでは軸毎に主ノードタイプに該当するノードを選択することになります。

・attribute軸の主ノードタイプは属性
・namespace軸の主ノードタイプは名前空間
・その他の軸の主ノードタイプは要素

文法上は、attribute::text()のような組み合わせができますが、これは無意味なので何も選択しません。

(1) NameTest

NameTestでは要素や属性の名前を指定して一致するものを選択します。

NameTestでは’*’を使えます。’*’は主ノードタイプが何であれすべてのノードに対して真となります。但し、NameTestの前には、軸指定子(AxisSpecifier)が置かれます。軸指定子が省略されないときは、例えば、child::* は起点ノードの子供であるすべての要素ノードを選択します。attribute::*は起点ノードのすべての属性を選択します。

ステップでは軸指定子を省略できます。するとステップは*または@*の形式となります。ステップにおいて*を指定するとchild::*であり、@*とするとAttribute::*です(第6回[3]の[5]と[13]の規定による)。

二番目のNCNameは、名前空間の接頭辞です。接頭辞はXML名前空間の仕様で規定されています[2]

xmlns:svg=”http://www.w3.org/2000/svg”

という名前空間の宣言があるとしますと、NCNameは’svg’にあたります。svg:*はsvg名前区間にあるすべてのノードを選択し、child::svg:*は文脈ノードの子供でsvg名前空間に属する要素ノードをすべて選択します。

QNameは名前空間接頭辞(オプション)で修飾された名前です。

(2) NodeType ‘(‘ ‘)’

NodeTestは、ノードの種類でノードを選択することもできます。ノードの種類は次の4種類です。

comment()
text()
processing-instruction()
node()

例えば、child::text()は起点ノードの子供のテキストノードを選択します。
comment()はコメントノード、processing-instruction()は処理命令のノードを選択します。
node()は任意の種類のノードを選択します。

ステップで、node()と記述すると、軸を省略したことになり、child::node()を意味します。従って、要素ノードのみを選択します。

[1] 2.3 Node Tests
[2] 3 Declaring Namespaces
[3] XSLTを学ぶ(6)ステップの文法を追求する

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

次回:
XSLTを学ぶ(9) ステップの文法を追求する-述部(Predicates)と式

前回:
XSLTを学ぶ(7)ステップの文法を追求する-軸とは

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




HTML on Word
WebページをWordで作る!


瞬簡PDF 書けまっせ 2024
PDFに文字が書ける! 入力欄を自動認識

税務調査をしっかり乗り切るためにも「スキャナ保存」を検討する

最近、筆者は、とある急成長中小企業の財務担当常務と税務調査の話題で盛り上がりました。

税務署は3名のチームで税務調査に来られて、朝は10時から夕方は16時まで張りつかれて帳簿や証憑を入念に調査されるのですが、特に仕入れ先からの請求書や 飲食やゴルフ等の領収書、各種契約書は、徹底的に質問攻めにされるようです。

このような時に帳簿の摘要欄に簡単なコメントを入れている程度では駄目で、仕訳の元となる証憑の現物の要求がされる訳ですが、段ボールの山から探し出すのがこれがまた大変なのであります。

証憑が探し出せて、しっかり説明できれば良いのですが、無ければ、結構”やばい”ことになっていくようです。

そこで、この企業様は、今回、電子帳簿保存法4条3項「スキャナ保存」制度の要件確保の検討に入られたのです。 そして、単に証憑をスキャンしてタイムスタンプを付与するだけでなく、経費を支払った目的や、内容をしっかり入力しておけば調査官の質問に応えられるので経理部門でルールを設けて今後はしっかり入力しよう!と決意されていました。

アンテナハウスの ScanSave (スキャンセーブ)は、そんな中小企業の「スキャナ保存」制度の要件確保用のソリューションです。

製品ページ:
https://www.antenna.co.jp/scansave/

是非とも参考にして下さい。




瞬簡PDF 変換 2024
PDFをOffice文書へ高精度変換


HTML on Word
WebページをWordで作る!

XSLTを学ぶ (7) ステップの文法を追求する-軸とは

パスは、ステップを’/’オペレータで結合したものであること、そしてステップは、AxisSpecifier NodeTest Predicate*の形式または省略形で記述されることを前回まで[1]に学びました。

ステップの例として、child::para[position()=1]を取り上げてみます。child::が軸指定子(AxisSpecifier)であり、あるノードを起点とするとき、その起点ノードの子供を選択します[2]

その後のparaがNodeTestでノードの名前の指定であり、child::paraは、起点ノードの子供で名前がparaのノードを選択します。NodeTestには’*’を使うこともでき、child::*とすると起点ノードの子供であるノードをすべて選択します。

[position()=1]はオプションの述部(Predicate)です。この場合、述部はノード集合の中での最初のノードを選択します。

軸は起点のノードからXML文書のツリーの方向を指定します。第1回[3]で学びましたが、ノードには7種類があり、また、軸の名前にはancestor、ancestor-or-self、attribute、child、descendant、descendant-or-self、following、following-sibling、namespace、parent、preceding、preceding-sibling、selfの13種類があります。

この中でself軸は起点となるノード自身を含みます。起点ノードが要素ノードのとき、self、ancestor、descendant、following、precedingは一つのXML文書の(属性、名前空間を除外して)すべてのノードを網羅します。

例えば、次のようなXML文書を考えてみます。

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

このXML文書をノードのツリーで表します。仮に起点が二つ目の要素ノードpであるとします。このときself::はpノードです。そこを起点にしてancestor、descendant、following、precedingは次のような関係になります。

XSLT2

上の図では、selfの子供pの属性ノード(src=”pic1″など)は除外しています。第2回[4]で説明しましたように属性ノードは子供(child)にはなりません。XSLT仕様では、decendentは、「childまたはchildの子供である」とされています。従って、属性や(名前空間ノードも)decendentにはなりません[5]

また、属性や(名前空間ノードも)はprecedenig、followingからも除外されています。

上の図とは異なりますが、もし、属性ノードsrc=”pic1″がselfであった時は、ancestorはその親であるpノードからルートノードまでとなります[6]。しかし、 following-sibling、preceding-siblingは空です。

child、parentについては第2回[4]で説明しました。child軸、parent軸はそれぞれselfノードの子または親です。child軸は複数の子供ノードを含みます。parent軸はあるとしてもひとつの親ノードのみを含みます。

attribute軸、namespace軸はそれぞれselfの属性ノード、名前空間ノードを含みます。

[1] XSLTを学ぶ(3)パスとは
XSLTを学ぶ(6)ステップの文法を追求する
[2] XPathでは起点ノードを文脈ノードといいます。そして、以下の説明の起点ノードのところは文脈ノードになっています。
[3] XSLTを学ぶ(1)XMLのツリーモデルとXPath/XSLTのツリーモデルではルートの意味が違う
[4] XSLTを学ぶ(2)ノードツリーとノードの親子、子孫関係
[5] 2.2 Axes
[6] XPathの仕様の2.2 Axesには、文脈ノードのancestorは、文脈ノードの親(parent)と親の親、以下同じ、から成るとあります。そして、5.3 Attribute Nodesには、要素はそれに付随する属性ノードの親である、と書いてあります。従って、属性ノードのancestorにはその親である要素ノードを選択することになります。

【広告】

次回:
XSLTを学ぶ(8)ステップの文法を追求する-NodeTest

前回:
XSLTを学ぶ(6)ステップの文法を追求する

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

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




瞬簡PDF 作成 2024
ドラッグ&ドロップでPDF作成


瞬簡PDF 編集 2024
かんたん操作でPDFを自由自在に編集
Pages: Prev 1 2 3 ... 98 99 100 101 102 103 104 ... 229 230 231 Next