eXtensible Synchronizing Script (XSync) 1.02

この版
http://member.nifty.ne.jp/Static/product/tosync/xsync.html
第2改訂版
準拠プログラム
Operating System 名称 対応改訂 アーカイブ名
Microsoft Windows 9x/NT toSync 3.02.0.0108 第2改訂版 tsync108.lzh(25.8KB/LHA(lh5))
最新版
http://member.nifty.ne.jp/Static/product/
以前の版
http://member.nifty.ne.jp/Static/product/tosync/tsync105.lzh
http://member.nifty.ne.jp/Static/product/tosync/tsync91.lzh
編者
.exe (Static) <gStatic@infoseek.jp>

Copyright(C)Static 1998-2004, All Rights Reserved.

この文書はeXtensible Synchronizing Script (XSync)、拡張可能な同期処理言語の詳細について述べたものです。 実装系の記述が間々見受けられますが、同一人物が規格と実装をやっているのでその点はご了承ください。 また、XSyncに関するご感想やご意見をお待ちしております。


目次

  1. はじめに
    1. 特徴
    2. 概要
  2. 処理モデル
    1. 処理手順定義文書の書式
      1. [parameters]セクション
      2. [instructions]セクション
        1. 組み込み置換シンボル
      3. [command]セクション
  3. ユーザーインターフェイス
    1. 処理前
    2. 処理中
    3. 処理後

付記

  1. 参考文献
  2. 改訂履歴

はじめに

特徴

概要

処理モデル

処理手順定義文書の書式

処理手順定義文書は大角括弧('['']')で囲まれたひとつの語句と任意の文字列を1つのセクションとして、 以下の3つのセクションから構成されます。

それぞれのセクションは改行文字によって結合され、 処理手順定義文書はWindowsで一般的に扱われている初期化ファイル(.ini)であり、 セクションは基本的にその形式にのっとって記述されます。 ここで処理手順定義文書のイメージを示しておきます。

[parameters]
...

[instructions]
...

[command]
...

また、1つの一般的なセクションは以下のように定義されます。

[parameters]セクション

このセクションでは[instructions]セクションの内容を置換する置換シンボルを記述します。 1つのシンボルはシンボルの名前とシンボルの内容を等号('=')で結合したものであり、 複数のシンボルはそれぞれ改行文字で結合されるので、改行文字を含むことはできません。 また、シンボルの数に制限はありませんが、 それによって処理手順定義文書のサイズが32KBを超過することはできません。 ここで置換シンボルのイメージを示しておきます。

また、1つのシンボルは以下のように定義されます。

[instructions]セクションにおいて置換シンボルを参照する際には 参照辞('$('')')で囲います。

[instructions]セクション

このセクションではtoSyncが行うファイル間の属性の比較、 それに基づくコマンドの発行などの処理シンボルを記述します。 このセクションのすべての部分で置換シンボルを参照することができます。 先に、1つの処理シンボルの定義を示します。

各句は空白文字により結合されます。

各処理シンボル構成句の機能・書式は以下の通りです。

フォルダセレクタ
機能
処理手順群句において必要となるフォルダを選択します。 選択されるフォルダはすでに存在するものでなければなりません。 つまり、選択されるフォルダは既存のフォルダとなり、 選択されるフォルダが存在しないときには後続の処理手順群句は処理されません。
絶対ロケーションパスを指定しますが、 toSyncではフォルダ・ファイルをその名前を要素名とする要素と捉え W3C XML Path Language (XPath) 1.0のロケーションステップの定義に基づいた指定を行ないます。 また、絶対ロケーションパスにおけるのルート要素は ドライブ名とコロン(':')とバックスラッシュ('\')を結合したもので表現され、 各ロケーションステップはバックスラッシュ('\')で結合されます。 ただし、現バージョンではロケーションステップの定義の利用において以下の制限があります。
部分 制限事項
基準点 利用可能な基準点はdescendant基準点とdescendant-or-self基準点とchild基準点です。
ノードテスト child基準点では'*'とQNameのみ、 descendant基準点とdescendant-or-self基準点では"node()"のみが使用できます。
述語 利用できません。(通常属性として固定されています)
省略文法 "descendant-or-self::node()"のみが省略でき、"child::"は省略しなければなりません。
フォルダセレクタのイメージを示しておきます。
フォルダセレクタ 選択されるフォルダ
'c:\winnt\*' c:\winnt下のすべてのフォルダを選択します。
'c:\winnt\\*' c:\winntと'c:\winnt\*'によって選択されるフォルダに加え すべてのサブフォルダも選択します。
'c:\winnt\descendant-or-self::node()\*' 'c:\winnt\\*'によって選択されるフォルダを選択します。
'c:\winnt\descendant::node()\*' 'c:\winnt\*'によって選択されるフォルダに加え すべてのサブフォルダも選択します。
'c:\winnt\\win9x' c:\winnt下のすべての'win9x'フォルダに加え すべてのサブ'win9x'フォルダも選択します。
定義
{フォルダセレクタ} ::= {絶対ロケーションパス}
ファイルセレクタ
機能
処理内容句において必要となるファイルを選択します。 選択されるファイルはすでに存在するものでなければなりません。 つまり、選択されるファイルは既存のファイルとなり、 選択されるファイルが存在しないときには後続の処理内容句は処理されません。
相対ロケーションパスを指定し、 その書式は絶対ロケーションパスとほぼ同じですが、ルート要素を記述することはできません。 通常はファイル名のみを記述しますが、 より選択的にファイルを選択(自由度を低く)したい場合には相対パスを付加してください。 ファイルセレクタのイメージを示しておきます。
フォルダセレクタ ファイルセレクタ 選択されるファイル
'c:\winnt\\*' *.html c:\winnt以下にあるすべてのHTMLファイル
'c:\winnt\\*' system\*.html c:\winnt以下にあるsystemフォルダ内のすべてのHTMLファイル
'c:\winnt\\*' \\*.svg c:\winnt以下にあるすべてのSVGファイル
定義
{ファイルセレクタ} ::= {相対ロケーションパス}

フォルダセレクタとファイルセレクタを通したファイルの選択機構は以下の通りです。

  1. フォルダセレクタによってフォルダ群が選択されます。
  2. 各フォルダ内の各ファイルがファイルセレクタによって選択されるか調べ、必要に応じて処理を行ないます。

結局のところ、フォルダセレクタとファイルセレクタはある1つのファイルを選択するために記述されるということになりますが、 この2つの句は以下に示す通りに、組み込み置換シンボルを決定するという点で重要な記述となっています。 つまり、toSyncはXPathとmakeとを組み込み置換シンボルという形でつないでいる、ということになります。

組み込み置換シンボル

もともと組み込み置換シンボルはmakeの機能であり、特に目新しい機能ではありません。 ただ、makeにおける組み込み置換シンボルはサフィックスや依存関係推論機構によって提供されるものであり、 toSyncのセレクタによって提供される組み込み置換シンボルはそれとは異なっています。 現バージョンで利用できる組み込み置換シンボルは以下の通りです。

シンボル名 シンボルの参照内容
@ セレクタによって選択されたファイルですが、 ファイルセレクタが表現するそのファイルまでの相対パスも含みます。 ただし、先頭にバックスラッシュ('\')がくることはありません。 また、そのセレクタに関連付けられているターゲット句とソース句とコマンド句でのみ参照できます。 たとえば、以下のようになります。
フォルダセレクタ ファイルセレクタ @
'c:\winnt\\*' *.html (ファイル名).html
'c:\winnt\\*' system\*.html system\(ファイル名).html
'c:\winnt\\*' \\*.svg SVGファイルへの絶対パスから、'c:\winnt\'を除いた部分
派生
@. @に含まれるファイルの拡張子を除いた部分を指します。末尾にドット('.')が付きます。
@/ @に含まれるパスの部分を指します。末尾にバックスラッシュ('\')が付きます。
/@. @に含まれるファイル名から拡張子を除いた部分を指します。 先頭にバックスラッシュ('\')が付き、末尾にドット('.')が付きます。
/@ @に含まれるファイル名を指します。先頭にバックスラッシュ('\')が付きます。
.@ @に含まれるファイルの拡張子を指します。先頭にドット('.')が付きます。
yyyy 現在の年(西暦)を指します。年は4桁で表現されます。
yy 現在の年(西暦)を指します。年は2桁で表現されます。
mm 現在の月を指します。月は2桁で表現されます。
dd 現在の日を指します。日は2桁で表現されます。

組み込み置換シンボルを参照する際には通常の置換シンボルと同様ですが、 先頭に参照辞('$')を付けます。

また、通常の置換シンボルは組み込み置換シンボルを含んでいてもかまいません。

条件
機能
ソースに対しターゲットを評価する際にターゲットが妥当でないと評価されるための条件を提供します。 条件は論理和('or')によって結合され、 ソースに対するターゲットの関係が条件を1つでも満たすと妥当でないと評価しコマンドを発行します。
以下の語句を複数指定できます。語句はスペース(' ')によって結合します。
語句 意味
old ターゲットの更新日時がソースよりも古い状態です。
none ターゲットが存在しません。
0kb ターゲットは存在しますが、ファイルサイズが0KBです。
invalid 'old''none''0kb'を指定したことを意味します。
何も指定しなかった場合、常に妥当であると評価されます。
定義
{条件} ::= ( 'old' | 'none' | '0kb' | 'invalid' )*
ターゲット
機能
評価されるファイルを提供します。 そのファイルは存在していなくてもかまいません。
{パス}を指定します。 複数指定することもでき、各パスはスペース(' ')によって結合します。 ただし、現バージョンでは最初の{パス}しか評価対象になりません。
定義
{ターゲット} ::= {パス}*
ソース
機能
ターゲットを評価する際の基準となるファイルを提供します。 そのファイルは存在していなくてもかまいません。 その場合、そのファイルに対してターゲットは新しい状態であると評価されます。
パスを指定します。 複数指定することもでき、各パスはスペース(' ')によって結合します。
定義
{ソース} ::= {パス}*
コマンド
機能
ターゲットが妥当でないと評価された時に発行されるコマンドを提供します。
実行ファイル(またはバッチファイル)へのパスとそれに渡す引数を指定します。 現バージョンではにスペース(' ')を含むことはできません。 また、そのパスのファイル名が処理中に表示される出力メッセージに使用されます。
定義
{コマンド} ::= {パス} ' ' {文字列}

[command]セクション

このセクションでは処理手順定義文書を解析し、 処理を開始する前に発行しておきたいコマンドなどを記述します。 [parameters]セクションと形式は同じですが、 使用可能なシンボル名は'begin'と'end'のみとなっています。 それぞれのシンボル名が表しているシンボルの機能は以下の通りです。

'begin'
処理手順定義文書を解析し、処理を開始する前に発行しておきたいコマンドを発行します。 その処理手順定義文書が有効化した時だけ発行され、それ以外には発行されません。
'end'
その処理手順定義文書が無効化した時に発行しておきたいコマンドを発行します。 toSyncの終了時にも発行されます。

このセクションでは置換シンボルを参照することはできません。

ユーザーインターフェイス

処理前

処理中

処理後


参考文献

改訂履歴

2001/05/30,(1.02)
表現がおかしかった所を修正
組み込み置換シンボル、@の例を記載
ソースの機能を明確化
2001/04/21,(1.01)
日付を表現する組み込み置換シンボルを追加
ファイルセレクタのとる値の意味を簡素化
ソースの機能を明確化
2001/03/18,(1.00)
とりあえず公開