年別アーカイブ: 2016年

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

第9回[1]では、式の生成規則を辿っている途中に幾つかわからない項目が出てきました。その一つは、ノード集合に対する演算の扱いです。ここでは論理演算や比較の演算におけるノード集合の扱いを調べてみます。

論理値(Booleans)[2]

or式は左辺と右辺の両方のオペランドをboolean関数と同じように論理値に変換して評価します。どちらかが真であれば真となり、そうでないとき偽となります。boolean関数はXPathで規定するコア関数の一種であり、引数を論理値に変換します。ノード集合は空でないとき真となります(詳しくは下に紹介しました)。

and式は両方のオペランドをboolean関数と同じように論理値に変換して評価します。両方が真であれば真となります。そうでないとき偽となります。

第9回の規則[23]の関係式(RelationalExpr)すなわち <=、<、>=、>、および等価式(EqualityExpr)すなわち=または!=、は左辺と右辺の二つのオペランドを次のように比較します。(ノード集合が関係するときだけを取り上げてみます。)

ノード集合同士を比較するときは、最初のノード集合と二つ目のノード集合の中に、ノードの文字列値同士を比較したときに真になるようなノードが含まれている時に限り、その比較は真になります。

ノード集合と数値の比較では、ノードの文字列値をnumber関数で数値に変換し、数値同士として比較します。ノード集合の中に、数値同士を比較して真になるようなノードが含まれていれば、比較が真になります。

ノード集合と文字列値の比較では、ノードの文字列値と他方の文字列値を比較し、文字列値同士を比較して真になるようなノードが含まれていれば、比較が真になります。

ノード集合と論理値の比較では、ノード集合をboolean関数で論理値にして、他方の論理値と比較します。

XPathには基本的な関数が規定されています。次に今日出てきた関数を紹介します。

boolean関数[3]
形式: boolean boolean(object)

boolean関数は引数を次のように論理値に変換します。
・数値は、ポジティブゼロでもネガティブゼロでもなく、NaN(Not-a-Number:数値でない)でもないとき真となります。
・ノード集合は空でないとき真となります。
・文字列は、長さがゼロでないとき真となります。
・四つの基本型以外のオブジェクトはその型依存の方法で論理値に変換されます。

number関数[4]
形式: number number(object?)

number関数は引数を次のように論理値に変換します。
・数値の後が空白で、前にオプションのマイナス記号、さらにその前のオプションの空白から構成される文字列は、その文字列によって表現される数学的値に最も近いIEEE 754数に変換されます。それ以外の文字列はNaNに変換されます。
・論理値の真は1に変換され、論理値の偽は0に変換されます。
・ノード集合は最初にstring関数を使ったように文字列に変換され、次いで引数が文字列のときと同様に数値に変換されます。
・四つの基本型以外のオブジェクトはその型依存の方法で数値に変換されます。

もし、引数が省略されたときは、既定値として文脈ノードのみから成るノード集合が使われます。

string関数[5]
形式: string string(object?)

文字列関数はオブジェクトを次のように文字列に変換します。
・ノード集合はノード集合の中で文書順で最初のノードの文字列値を返すことで文字列値に変換されます。ノード集合が空のときは空文字列が返されます。
・数値は次のように文字列に変換されます。
 ・NaNは文字列NaNに変換されます。
 ・ポジティブゼロは文字列0に変換されます。
 ・ネガティブゼロは文字列0に変換されます。
 ・ポジティブな無限大は文字列Infinityに変換されます。
 ・ネガティブな無限大は文字列-Infinityに変換されます。
 ・数値が整数型のときは、小数点や先行するゼロのない十進数で表現されます。数値がマイナスのときは、マイナス記号が先行します。
 ・整数でないときは、小数点を含み、小数点の前に少なくとも1個の十進数があり、小数点の後に少なくとも1個の十進数があり、マイナスのときは、マイナス記号が先行する形式となります。不要な先行するゼロがあってはならず、少数点の後には他のIEEE 754と区別するのに必要なだけの数値がなければなりません。
・論理値の偽は文字列falseになり、論理値の真は文字列trueになります。
・四つの基本型以外のオブジェクトはその型依存の方法で文字列に変換されます。

もし、引数が省略されたときは、既定値として文脈ノードのみから成るノード集合が使われます。

なお、string 関数は表示用に整形するために用意されているものではありません。整形にはXSLTのxsl:number要素を使います。

[1] XSLTを学ぶ(9)ステップの文法を追求する-述部(Predicates)と式
[2] 3.4 Booleans
[3] boolean関数
[4] number関数
[5] string関数

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

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




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


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

第63回 「スマホ に関連する 新QAが公開されました 7月6日 」

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

「スマホ に関連する 新QAが公開されました 7月6日 」 

ほぼ 予定通りでしたね。注目のH28年緩和に関わるQAが発表されています。

下記よりご覧ください。

https://www.nta.go.jp/shiraberu/zeiho-kaishaku/joho-zeikaishaku/dennshichobo/jirei/07index.htm

代表的なものとして時間の無い方は、まずはここから押さえましょう!

――【広告】――
・アンテナハウスは、中小企業皆様のペーパレス経理への挑戦をサポートします!
・「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作成

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のツリーモデルではルートの意味が違う




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


アウトライナー
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をOffice文書へ高精度変換

瞬簡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を解析して しおり・目次を自動生成

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に文字が書ける! 入力欄を自動認識

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

梅雨明けが待ち遠しいですね。
アンテナハウスオンラインショップでは景気よくボーナスキャンペーンを行っています。
期間は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作成


瞬簡PDF 統合版 2024
アンテナハウスPDFソフトの統合製品!

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

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

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

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

よりご覧ください。

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

是非ご覧ください。




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


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

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のツリーモデルではルートの意味が違う




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


瞬簡PDF 統合版 2024
アンテナハウスPDFソフトの統合製品!
Pages: Prev 1 2 3 ... 8 9 10 11 12 13 14 ... 24 25 26 Next