For Development HEAD DRAFTSearch (procedure/syntax/module):

12.62 sxml.serializer - SXMLからXMLとXHTMLのシリアライゼーション

Module: sxml.serializer

このモジュールはSXMLからXMLとHTMLへの変換を行う、様々な機能を持つ シリアライザを提供します。XSLT2.0とXQuery1.0に部分的に適合しています。 (http://www.w3.org/TR/2005/CR-xslt-xquery-serialization-20051103/)。 sxml.toolsのsxml:sxml->xmlとsxml:sxml->htmlよりも強力です。

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


12.62.1 簡単なSXML変換

高レベルの、簡単に使えるシリアライザです。大抵の目的にはこれで十分使えるでしょう。

Function: srl:sxml->xml sxml-obj :optional port-or-filename

{sxml.serializer} sxml-objをXMLへと変換します。出力は人間が読みやすいように インデントされます。

port-or-filenameが与えられなければ、 戻り値はsxml-objの変換結果の文字列になります。

port-or-filenameがポートならば、そのポートにXMLを書き出します。 戻り値は不定です。

port-or-filenameが文字列ならば、その名のファイルにXMLを書き出し ます。戻り値は不定です。そのようなファイルが既に存在する場合、 結果は不定です。

註: sxml.ssaxsxml:sxml->xmlと異なり、 この手続きはXML属性の値が文字列であることを要求します。

Function: srl:sxml->xml-noindent sxml-obj :optional port-or-filename

{sxml.serializer} srl:sxml->xmlと同じように動作しますが、インデントを行いません。

引数port-or-filenamesrl:sxml->xmlと同様に動作します。

Function: srl:sxml->html sxml-obj :optional port-or-filename

{sxml.serializer} sxml-objをHTMLへと変換します。出力は人間が読みやすいように インデントされます。

引数port-or-filenamesrl:sxml->xmlと同様に動作します。

註: sxml.ssaxsxml:sxml->htmlと異なり、 この手続きはXML属性の値が文字列であることを要求します。

Function: srl:sxml->html-noindent sxml-obj :optional port-or-filename

{sxml.serializer} srl:sxml->htmlと同じように動作しますが、インデントを行いません。

引数port-or-filenamesrl:sxml->xmlと同様に動作します。


12.62.2 カスタムSXML変換

以下の手続きはXMLシリアライザの全ての設定パラメータへのアクセスを提供 します。

Function: srl:parameterizable sxml-obj :optional port-or-filename params*

{sxml.serializer} 汎用シリアライズ手続、この実装でサポートするすべてのシリアライズパラメー タのパラメータ化。

sxml-obj - シリアライズするSXMLオブジェクト。

port-or-filename - #fあるいはポートあるいは文字列のどれか。 srl:sxml->xmlのものと同じ働きをします(簡単なSXML変換)。

params - 各パラメータはパラメータ名(シンボル)とパラメータ値との コンス対。利用可能なパラメータ名とその値については後述。

method - シンボルxmlhtmlのどちらか。XMLメソッド とHTMLメソッドの相違についての詳しい説明は、XSLT 2.0 と XQuery Serialization (http://www.w3.org/TR/2005/CR-xslt-xquery-serialization-20051103/) を参照してください。

indent - 出力の XML が読みやすさのために空白を含むかどうか (#tあるいは#f)。文字列を設定することもでき、その場合 インデント単位に使われます。

omit-xml-declaration - XML宣言を省略するかどうか。デフォルトは #t

standalone - XML ドキュメントを XML 宣言でスタンドアローンとし て定義するかどうか。yesnoomitのうちいずれかの シンボルでなければならない。デフォルトは omit

version - XML宣言中のXMLバージョン。文字列または数。デフォルト は"1.0"

cdata-section-elements - SXML要素の名前(シンボル)のリスト。これ らの要素の中身はCDATAセクションと同様にエスケープされる。

ns-prefix-assig - (cons prefix namespace-uri)のリスト。 各prefixはシンボルで、namespace-uriは文字列。 対応する接頭辞をつけて与えられた名前空間をシリアライズする。

注意: パラメータ名が期待された名前ではない場合、あるいはパラメータ値 が不正な形式である場合にはそのようなパラメータは警告なしで無視されます。

使用実例:

(srl:parameterizable
  '(tag (@ (attr "value")) (nested "text node") (empty))
  (current-output-port)
  '(method . xml)  ; XML出力をデフォールト
  '(indent . "\t")  ; インデントは一つのタブ
  '(omit-xml-declaration . #f)  ; XML宣言をつける
  '(standalone . yes)  ; 「standalone」宣言もつける
  '(version . "1.0"))  ; XMLのバージョン
param ::= (cons param-name param-value)
param-name ::= symbol

cdata-section-elements
value ::= (listof sxml-elem-name)
sxml-elem-name ::= symbol

indent
value ::= 'yes | #t | 'no | #f | whitespace-string

method
value ::= 'xml | 'html

ns-prefix-assig
value ::= (listof (cons prefix namespace-uri))
prefix ::= symbol
namespace-uri ::= string

omit-xml-declaration
value ::= 'yes | #t | 'no | #f

standalone
value ::= 'yes | #t | 'no | #f | 'omit

version
value ::= string | number
Function: srl:sxml->string sxml-obj cdata-section-elements indent method ns-prefix-assig omit-xml-declaration? standalone version

{sxml.serializer} srl:parameterizableと同様ですが、文字列を返し、パラメータ解析のオーバヘッ ドはありません。この関数のインタフェースはこのライブラリの将来のバージョ ンでは変更されるかもしれません。

Function: srl:display-sxml sxml->obj port-or-filename cdata-section-elements indent method ns-prefix-assig omit-xml-declaration? standalone version

{sxml.serializer} srl:parameterizableと同様ですが、結果を port-or-filenameに書き出します。パラメータ解析のオーバーヘッドはありません。 この関数のインタフェースはこの ライブラリの将来のバージョンでは変更されるかもしれません。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT