SXML

SXML
ファイル名拡張子
.sxml.scm
タイプコード文章
フォーマットの種類マークアップ言語

SXMLは、 XMLデータ(より正確にはXML Infoset [ 1 ])をS式として記述するための代替構文であり、 LispSchemeでのXMLデータの操作を容易にします。関連ツールスイートは、 Scheme [ 2 ] [ 3 ]でSXML用のXPathSAXXSLTを実装しており、 GNU Guile実装で利用可能です。

サンプル XML スニペットの SXML と XML 間のテキスト対応を以下に示します。

XML SXML
<tag attr1= "value1" attr2= "value2" > <nested>テキストノード</nested> <empty/> </tag>
(タグ( @ (属性1 "値1" ) (属性2 "値2" )) (ネストされた"テキストノード" ) ())

XMLおよびその関連言語の他の代替表現と比較して、SXMLは既存のScheme実装で直接解析できるという利点があります。関連ツールとドキュメントは、David MertzによるIBM developerWorksのコラムで多くの点で高く評価されていますが、同時に、そのドキュメントとシステムが未熟であることについても批判しています。[ 4 ]

次の単純なXHTMLページを見てみましょう。

< html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en" > < head > < title >サンプルページ</ title > </ head > < body > < h1 id = "greeting" >こんにちは!</ h1 > < p >これは、XHTMLとSXML を示すための " >>サンプル<< "です。</ p > </ body > </ html >

これを SXML に変換すると、同じページは次のようになります。

( *TOP* ( @ ( *NAMESPACES* ( x "http://www.w3.org/1999/xhtml" ))) ( x:html ( @ ( xml:lang "en" ) ( lang "en" )) ( x:head ( x:title "サンプルページ" )) ( x:body ( x:h1 ( @ ( id "greeting" )) "こんにちは" ) ( x:p "これは、XHTML と SXML を示すための単なる \">>例<<\" です。" ))))

各要素のタグペアは、括弧のセットに置き換えられます。タグ名は最後に繰り返されず、リストの最初のシンボルとして表示されます。要素の内容は、要素自体または文字列のいずれかです。XML属性には特別な構文は必要ありません。SXMLでは、それらは単に という特別な名前を持つ別のノードとして表されます。 はXMLのタグ名として許可されていないため、@実際のタグと名前が衝突することはありません。これはSXMLの一般的なパターンです。タグが特別なステータスやXMLでは不可能なことを示すために使用される場合は常に、有効なXML識別子を構成しない名前が使用されます。 "@"@

"SXML文字列には、文字列区切り文字( を使用\")と\エスケープ記号自体( を使用)の2つの文字をエスケープする必要があります\\。上記のXMLコードでは、&<>(それぞれ&amp;&lt;を使用&gt;)の3つの文字をエスケープする必要があります。

参考文献

  1. ^ Kiselyov, Oleg (2002). 「SXML仕様」. ACM SIGPLAN Notices . 37 (6): 52– 58. doi : 10.1145/571727.571736 . S2CID  13955814 .
  2. ^ Kiselyov, Oleg; Lisovsky, Kirill (2002). XML、XPath、XSLT の SXML、SXPath、SXSLT としての実装(PDF) . 国際 Lisp 会議.
  3. ^ Kiselyov, Oleg; Krishnamurthi, Shriram (2003). SXSLT: XML操作言語. 宣言型言語の実践的側面. コンピュータサイエンス講義ノート. 第2562巻. pp.  256– 272. doi : 10.1007/3-540-36388-2_18 . ISBN 978-3-540-00389-2
  4. ^ Mertz, David (2003年10月23日). 「XML Matters: Investigating SXML and SSAX」 . IBM developerWorks . 2004年12月4日時点のオリジナルよりアーカイブ2015年1月10日閲覧。