For Gauche 0.9.5


Next: , Previous: , Up: ライブラリモジュール - ユーティリティ   [Contents][Index]

12.46 sxml.tools - SXML構造を操作する

Module: sxml.tools

現在のバージョンは、sxml-toolsのCVSのリビジョン3.13から導出されています。

マニュアルのエントリは主に、オリジナルのソースコードから導出されています。


Next: , Previous: , Up: SXML構造を操作する   [Contents][Index]

12.46.1 SXMLの述語

Function: sxml:empty-element? obj

与えられた要素objが空なら#tを返す述語です。 空要素は、ネストした要素、テキストノード、PI、コメントや実体を 持ちませんが、属性や名前空間IDは持つかもしれません。 それは、XMLのempty-elementのSXML版です。

Function: sxml:shallow-normalized? obj

与えられたobjが浅く正規化されたSXML要素であれば#tを返します。 要素それ自体は正規化されていなければなりませんが、ネストした要素は テストされません。

Function: sxml:normalized? obj

与えられたobjが正規化されたSXML要素であれば#tを返します。 要素それ自体とその全てのネストした要素が正規化されていなければなりません。

Function: sxml:shallow-minimized? obj

与えられたobjが浅く最小化されたSXML要素であれば#tを返します。 要素それ自体は最小化されていなければなりませんが、そのネストした要素は テストされません。

Function: sxml:minimized? obj

与えられたobjが最小化されたSXML要素であれば#tが返されます。 要素それ自体とその全てのネストした要素が最小化されていなければなりません。


Next: , Previous: , Up: SXML構造を操作する   [Contents][Index]

12.46.2 SXMLへのアクセッサ

Function: sxml:name obj

与えられたSXMLノードの名前を返します。 これは単にcarのエイリアスに過ぎませんが、カプセル化のために導入されています。

Function: sxml:element-name obj

sxml:nameの、与えられたobjがSXML要素ではない場合は#fを返す バージョンです。objがSXML要素であれば、その名前を返します。

Function: sxml:node-name obj

sxml:nameの、与えられたobjがSXMLノードでない場合は#fを返す、 安全なバージョンです。objがSXMLノードであれば、その名前を返します。

Function: sxml:ncname obj

与えられたobjの完全修飾名(Namespaces in XML production [6])のローカルパート、 つまりその完全修飾名を“:”で分割した後ろの部分を返します。 与えられたノードの名前がNCName(Namespaces in XML production [4])であれば、 それをそのまま返します。 SXMLの名前はシンボルですが、この関数は文字列を返すことに注意して下さい。

Function: sxml:name->ns-id sxml-name

与えられた名前の名前空間ID部分を返します。与えられた名前がLocalNameの 場合は#fを返します。

Function: sxml:content obj

与えられたSXML要素かノードセット(テキストノードと要素ノードのみ)の内容を、 ドキュメントオーダーにしたがった文字列のリストとネストした要素として 返します。このリストは、objが空要素や空リストの場合は空です。

Function: sxml:content-raw obj

正規化されたSXML要素の全ての内容を、attr-listaux-listを除いて 返します。 したがってそれは、PICOMMENTENTITY ノードとともに、sxml:contentによって返されるTEXTELEMENTも含みます。 戻り値は、ドキュメントオーダーにしたがったノードのリストか、 objが空要素や空リストの場合は空リストになります。 この関数は、sxml:contentよりも高速です。

SXMLの通常のフォームでは、1つの要素は次のようなリストで表現されます。

  (name attr-list aux-list content …)

attr-list@で始まるリストで、aux-list@@で 始まるリストです。

最小化されたフォームでは、aux-listは空であれば省略できます。 attr-listは、それが空でかつaux-listがなければ省略できます。

以下の手続きは、attr-listaux-listを抽出するものです。

Function: sxml:attr-list-node obj

与えられたobjattr-listを返します。 attr-listが存在しなければ#fを返します。

Function: sxml:attr-as-list obj

attr-listをリストにラップして返します。 attr-listが存在せずaun-listがある場合は’((@))を返します。 両方とも存在しない場合には’()を返します。

Function: sxml:aux-list-node obj

与えられたobjaux-listを返します。 attr-listが存在しなければ#fを返します。

Function: sxml:aux-as-list obj

aux-listをリストにラップして返します。 aux-listが存在しなければ’()を返します。

Function: sxml:attr-list-u obj

与えられた要素かノードセットの属性のリストを返します。 ((sxpath '(@ *)) obj)と類似です。 属性のリストがない場合は空リストが返されます。

Function: sxml:aux-list obj

与えられた要素かノードセットの補助ノードのリストを返します。 ((sxpath '(@@ *)) obj)と類似です。 補助ノードのリストがない場合は空リストが返されます。

Function: sxml:aux-list-u obj

与えられた要素かノードセットの補助ノードのリストを返します。 ((sxpath '(@@ *)) obj)と類似です。 補助ノードのリストがない場合は空リストが返されます。

-uが付くものは、正規化されていないSXMLノードに対しても 使えるということを示しています。(’u’は’universal’の意味です。)

Function: sxml:aux-node obj aux-name

与えられたSXML要素objaux-nameという名前の付いている最初の 補助ノードを返します。そのようなノードがない場合は#fを返します。 注意: 複数のノードがあっても最初に見つかったノードのみを 返します。したがって、ユニークな名前を持っているノード群に対して 使われることを意図しています。

Function: sxml:aux-nodes obj aux-name

与えられたSXML要素objaux-nameとうい名前の付いている補助ノードの リストを返します。そのようなノードがなければ’()を返します。

Function: sxml:attr obj attr-name

与えられたSXML要素objattr-nameという属性へのアクセッサです。 戻り値は、その属性が存在すればその属性の値、与えられた要素に そのような属性がなければ#fです。

Function: sxml:num-attr obj attr-name

与えられたSXML要素objattr-nameという数値の属性への アクセッサです。 戻り値は、その属性が存在してその値がstring->numberにより数値へ 変換できる場合はその属性を数値としてその属性の値、 与えられた要素にそのような属性がないかその値が数値へ変換できない場合は #fです。

Function: sxml:attr-u obj attr-name

与えられたSXML要素objattr-nameという名前の属性への アクセッサです。objは、(通常はSXML要素の内容である) 属性リストやノードセットでも構いません。

戻り値は、その属性が存在すればその属性の値、与えられた要素に そのような属性がない場合は#fです。

-uが付くものは、正規化されていないSXMLノードに対しても 使えるということを示しています。(’u’は’universal’の意味です。)

Function: sxml:ns-list obj

与えられた要素の名前空間のリストを返します。 ((sxpath '(@@ *NAMESPACES* *)) obj)と類似です。 名前空間のリストがない場合は空リストが返されます。

Function: sxml:ns-id->nodes obj namespace-id

SXML要素objで、与えられたnamespace-idに対応する名前空間の 連想リストのリストを返します。 ((sxpath '(@@ *NAMESPACES* namespace-id)) obj)と類似です。 与えられたnamespace-idに対応する名前空間の連想リストがない場合は 空リストが返されます。

Function: sxml:ns-id->uri obj namespace-id

与えられたnamespace-idに対応するURIを返します。 与えられたnamespace-idに対応する名前空間の連想リストがない場合は #fを返します。

Function: sxml:ns-uri->id obj uri

与えられた名前空間URIに対応する名前空間IDを返します。

Function: sxml:ns-id ns-assoc

与えられた名前空間連想リストに対応する名前空間IDを返します。

Function: sxml:ns-uri ns-assoc

与えられた名前空間連想リストに対応するURIを返します。

Function: sxml:ns-prefix ns-assoc

与えられた名前空間連想リストに対応する名前空間接頭辞を返します。 与えられた名前空間IDの(XML文書における)オリジナルの接頭辞は、 それが名前空間IDと異なる場合は、名前空間連想リストの3番目の要素として 格納されなければなりません。 名前空間連想リストでオリジナルの接頭辞が省略されている場合は、 代わりに名前空間IDが使われます。


Next: , Previous: , Up: SXML構造を操作する   [Contents][Index]

12.46.3 SXMLのモディファイヤ

正規化されたSXMLデータのコンストラクタやミューテータです。 これらの関数は、正規化されたSXMLデータに最適化されています。 任意の正規化されていないSXMLデータには適用できません。

ほとんどの関数には2つのバージョンがあります。

  1. 与えられた要素のその場での更新のために副作用が意図された関数。 これらの名前はエクスクラメーションマークで終わっています。 このバージョンの戻り値は、特に断りのない限り未定義です。 例としては、sxml:change-content!が挙げられます。
  2. 変更された要素を返す、副作用のない純粋な関数。 例としては、sxml:change-contentが挙げられます。
Function: sxml:change-content obj new-content
Function: sxml:change-content! obj new-content

与えられたSXML要素の内容を、new-contentに変更します。 new-contentが空リストの場合は、objは空要素に変更されます。 結果のSXML要素は正規化されています。

Function: sxml:change-attrlist obj new-attrlist
Function: sxml:change-attrlist! obj new-attrlist

結果のSXML要素は正規化されています。 new-attrlistが空の場合は、objのcadrは(@)になります。

Function: sxml:change-name obj new-name
Function: sxml:change-name! obj new-name

SXML要素の名前を破壊的に変更します。

Function: sxml:add-attr obj attr

属性attrが追加されたSXML要素objを返します。 与えられた名前の属性がすでに存在する場合は#fを返します。 attr(attr-name attr-value)です。 sxml:add-attr!に対応する純粋関数的な関数です。

Function: sxml:add-attr! obj attr

要素objに属性attrを追加します。 与えられた名前の属性がすでに存在する場合は#fを返します。 結果のSXMLノードは正規化されています。 sxml:add-attrに対応するその場で更新する関数です。

Function: sxml:change-attr obj attr

属性attrの値が変更されたSXML要素objを返します。 与えられた名前の属性がない場合は#fを返します。 attr(attr-name attr-value)です。

Function: sxml:change-attr! obj attr

要素objの属性の値を変更します。 attr(attr-name attr-value)です。 そのような属性がない場合は#fを返します。

Function: sxml:set-attr obj attr
Function: sxml:set-attr! obj attr

要素objの属性attrをセットします。 そのような属性がない場合は新しい属性として追加されます。

Function: sxml:add-aux obj aux-node

補助ノードaux-nodeが追加されたSXML要素objを返します。

Function: sxml:add-aux! obj aux-node

要素objに補助ノードaux-nodeを追加します。

Function: sxml:squeeze obj
Function: sxml:squeeze! obj

与えられたSXML要素objとその子孫について、空のリストである属性 および補助リストを排除します(最小化)。 最小化され、正規化されたSXML要素が返されます。

Function: sxml:clean obj

与えられたSXML要素objとその子孫について、空リストである属性と、 全ての補助リストを削除します。 最小化され、正規化されたSXML要素が返されます。


Next: , Previous: , Up: SXML構造を操作する   [Contents][Index]

12.46.4 SXPathの補助的ユーティリティ

これらは、SXPathの機能を拡張する便利なユーティリティです。

Function: sxml:add-parents obj . top-ptr

SXMLノードセットに’親へのポインタ’を追加したものを返します。 親へのポインタは、(*PARENT* thunk)というフォームを持つ 補助ノードです。thunkは親要素を返します。

Function: sxml:node-parent rootnode

高速な’node-parent’関数を返します。 すなわち、SXML要素を1引数として取り、補助リストで *PARENT*ポインタを使ってその親ノードを返す関数を返します。 ’*TOP-PTR*はルートノードへのポインタとして使われます。 ルートノードに対して適用されると空リストを返します。

Function: sxml:lookup id index

要素をそのIDを使って探します。


Previous: , Up: SXML構造を操作する   [Contents][Index]

12.46.5 SXMLからマークアップへの変換

SXMLからXMLやHTMLなどのマークアップされたテキストを生成する手続き。 もっと高尚な変換器を得たいだけならば、 SXMLからXMLとXHTMLのシリアライゼーションをチェックして下さい。

Function: sxml:clean-feed . fragments

’fragments’をフィルタします。 fragmentsは、文字列、文字、数値、手続き、#f、他のフラグメントの リストです。 この関数はツリーを深さ優先でトラバースし、 文字列、文字、実行された手続きのリストを返し、 #fと’()を無視します。

全ての意味のあるフラグメントは文字列で、 この関数の結果に(apply string-append ... )を 適用すると、そのstring-valueを返します。

これは、Oleg KiselyovのSRV:send-replyの変種であるとみなすことが できるでしょう。 SRV:send-replyはフラグメントを印字(display)しますが、 この関数は意味のあるフラグメントのリストを返し、ごみをふるい落とします。

Function: sxml:attr->xml attr

属性のXMLマークアップを作ります。

Function: sxml:string->xml string

与えられた文字列中の全ての<>&``'を対応する文字実体参照に置き換えた、文字列あるいは 文字列のリストを返します。 sxml:string->htmlも参照して下さい。

Function: sxml:sxml->xml tree

SXML->XML変換に特化され最適化されたバージョンのノードディスパッチです。

Function: sxml:attr->html attr

属性のHTMLマークアップを作ります。

Function: sxml:string->html string

与えられた文字列で、それがエンコーディングを必要とする文字、 <>&を含まないことをチェックします。 シンプルなHTMLドキュメントの構築html-escape-stringも参照して下さい。

Function: sxml:non-terminated-html-tag? tag

この述語は、“終了タグのない”HTML 4.0のタグに対して#tを 返します。

Function: sxml:sxml->html tree

SXML->HTML変換に対して特化され最適化されたバージョンのノードディスパッチ です。


Previous: , Up: SXML構造を操作する   [Contents][Index]