XMLとツリーに関するグローバルプロパティ
SenseTalkには、スクリプトとXML およびツリー構造データとのやり取り手法に影響を与えることのできるグローバルプロパティが2つ存在します。
グローバルプロパティの値を設定するときは、SenseTalkコマンドのSetやPutが使用できます。これらのプロパティを参照する場合は、単語theをプロパティ名の前に使用し、通常の変数と区別する必要があることに注意してください。
例:
set the searchrectangle to (1,2,2,3)
put 2 into the remoteworkinterval
以下の構文を使用して、グローバルプロパティ内で特定の名前付きプロパティの追加や変更を行うことができます。
set the namedColors.pink to color("RGB,1.0,0.5,0.5") -- pinkをthe namedColorsグローバルプロパティに追加し、そのRGBカラー値を定義します
set the listFormat's separator to " & " -- the listFormatグローバルプロパティのseparatorプロパティを設定します
setoptionまたはsetoptionsコマンドを使用して、プロパティの設定や更新を行うこともできます。setoptionコマンドを利用すると単一のプロパティを更新でき、setoptionsコマンドを利用すると複数のプロパティを更新できます。
例:
setoption searchrectangle, (1,2,2,3)
setoptions (searchrectangle: (1,2,2,3), scriptlogging: yes)
ローカルプロパティとグローバルプロパティの扱い方に関する追加情報は、SenseTalkにおけるローカルプロパティとグローバルプロパティをご覧ください。
the treeFormatグローバルプロパティ
値:prettyPrint、compactEmptyElementsおよびuseStandardFormatプロパティを備えたプロパティリスト。
デフォルト:
- prettyPrint:True
-
compactEmptyElements:False
- useStandardFormat:False
挙動:PrettyPrintは、ツリーを整形して表示するかどうかを定義します。この値をfalseに設定すると、ツリーをXMLテキストとして表示するときの整形フォーマッティングがオフになります。compactEmptyElementsプロパティは、ツリー内の空の要素の表示について管理します。このプロパティをFalseに設定すると、空のノードを表示するのに開始要素と終了要素が別個に使われます。Trueに設定すると、空のノードが自己終了タグの形で表示されます。
the treeFormatのuseStandardFormatプロパティをtrueに設定すると、ツリーは必ず_tag、_attributesおよび_childrenプロパティを備えた標準フォーマットを使ってプロパティリストに変換されます。falseに設定すると、ツリーがプロパティリストに変換される際(as property listまたはas objectを使用)、所定のプロパティ名以外のタグを持っていたり、所定のプロパティ名の属性を一切持っていなかったりするノードに対しては簡略化されたプロパティリストフォーマットが使われます。
例:
set the treeFormat's prettyPrint to false -- ツリーの字下げをオフにします
set the treeFormat's compactEmptyElements to to true -- 空のノードが自己終了タグの形で表示されるようになります
set the treeFormat's useStandardFormat to false -- 標準フォーマットを使ってツリーをプロパティリストへ変換できます
例:
set OrderInfo to {{
<order id="001">
<quantity>5</quantity>
<price></price>
</order>
}}
set the treeFormat's compactEmptyElements to true
put OrderInfo as tree
上記のコマンドの出力は、次のような形となって現れます。
<order id="001">
<quantity>5</quantity>
<price/>
</order>
例:
put {{
<person id="007">
<name>James Bond</name>
</person>
}} into Person
set the treeFormat's prettyPrint to false
put person as tree // 「
例:
set OrderInfo to {{
<order id="001">
<quantity>5</quantity>
<price></price>
</order>
}}
put OrderInfo as tree as object // 「(_attributes:(id:"001"), order:((quantity:(5)),(_tag:"price")))」を表示します
set the treeFormat's useStandardFormat to true
put OrderInfo as tree as object // 「(_attributes:(id:"001"), _children:((_children:((_text:"5")), _tag:"quantity"),(_tag:"price")), _tag:"order")」を表示します
関連:
the treeInputFormatグローバルプロパティ
値:alwaysJoinTextプロパティを備えたプロパティリスト
デフォルト:True
挙動:alwaysJoinTextプロパティは、2つのテキストノードが互いに隣接するような変更がツリーに加えられたとき、テキストノードを常に自動で結合するかどうかを定義します。falseに設定すると、連続したテキストノードをツリー内に存在させることができます。これは、一部の用途で役立つこともありますが、Xpathによるノードアクセスが正しく機能しない可能性があります。ノードアクセス機能(nodeまたはall-nodes式を使用)の信頼性を確保するためには、この値をtrue設定のままにしておきます。
例:
set the treeInputFormat's alwaysJoinText to false
関連: