On Mon, 11 Mar 2002 11:26:49 +0900
ねこ丸 <QYE07500@...> さんwrote:
> 別なとこで出た話題なのですが、こんなんあります。
>
> ブックマーク記述言語「XBEL」
> http://www2.airnet.ne.jp/sardine/complang/XBEL.html
大変おもしろいので、遊んでみました。私はArrangeNoteでブックマークを管
理しているので、ArrangeNoteにIEからドラッグ&ドロップで放り込んだURLを
XML-XBELで出力するJavaScriptを書きました。といっても付属している山本さん
のgenxml.jsを改造したものですが・・・
////////////////////////////////////////////////////////////
// ArrangeNote専用スクリプト
// genxbel.js - ブックマークのメモをXML-XBELファイルに出力
// genxml.js modified by Kazuo Fujioka
////////////////////////////////////////////////////////////
// お約束・ノートオブジェクトを取得する ////////////////////////////////////////
var note = ANScript.GetNote();
// いろんな関数の定義 //////////////////////////////////////////////////////////
function substitute( body, c, rep ) {
var body2 = new String( '' );
var i, j;
for( i = 0; ( j = body.indexOf( c, i ) ) != -1; i = j + c.length ) {
body2 += body.substring( i, j );
body2 += rep;
}
body2 += body.substr( i );
return body2;
}
function genXMLtag( name, value ) {
var value2 = new String( value );
value2 = substitute( value2, '&', '&' );
value2 = substitute( value2, '<', '<' );
value2 = substitute( value2, '>', '>' );
value2 = substitute( value2, "'", ''' );
value2 = substitute( value2, '"', '"' );
var tag = new String( '' );
tag += '<' + name;
if ( value2.length ) {
tag += '>' + value2 + '</' + name + '>';
} else {
tag += ' />';
}
return tag;
}
function genXML( node ) {
if ( node == null || node.Type == note.MEMO ) { return; }
var i;
for( i = 0; i < node.GetChildItemCount(); i++ ) {
var item = node.GetChildItem( i );
if ( item.Type == note.MEMO ) {
if (item.UrlBody == true){
var x = new String(item.Body);
var y = new String;
y = x.split("\n",2);
xml += ' <bookmark href="' + y[0] + '" visited="' + item.ModifiedTime + '">\n';
}
if ( item.UrlRemarks == true ){
xml += ' <bookmark href="' + item.Remarks + '" visited="' + item.ModifiedTime + '">\n';
}
xml += " " + genXMLtag( 'title', item.Title ) + '\n';
xml += " " + genXMLtag( 'desc', item.Body ) + '\n';
xml += ' </bookmark>\n';
} else {
xml += ' <folder>\n';
xml += " " + genXMLtag( 'title', item.Title ) + '\n';
genXML( item );
xml += ' </folder>\n';
}
}
}
// XMLファイルの出力先を選ぶ ///////////////////////////////////////////////////
var filename = ANScript.ChooseFile( "出力するXMLファイル名を指定してください。", true );
if ( filename == "" ) {
ANScript.Quit();
}
if ( filename.lastIndexOf( '.xml' ) == -1 ) {
filename += '.xml';
}
var file = ANScript.FileObject( filename );
if ( file.Exist() ) {
var confirm = ANScript.Confirm(
"指定されたファイルは既に存在します。\n上書きしてもよろしいですか?", ANScript.YESNO );
if ( confirm != ANScript.YES ) {
ANScript.Quit();
}
}
// XMLデータを作成する /////////////////////////////////////////////////////////
var xml = '<?xml version="1.0" encoding="Shift_JIS" ?>\n';
xml += '<?xml-stylesheet type="text/xsl" href="xbel-1.0.xsl"?>\n';
xml += '<!-- <?xml-stylesheet type="text/xsl" href="basic_xbel.xsl"?> -->\n';
xml += '<!DOCTYPE xbel PUBLIC "+//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML" "http://www.python.org/topics/xml/dtds/xbel-1.0.dtd">\n';
xml += '<xbel>\n';
xml += ' <title>Bookmarks of Kazuo Fujioka</title>\n';
xml += ' <info><metadata owner="Kazuo Fujioka"/></info>\n';
genXML( note.GetRootItem() );
xml += '</xbel>\n';
// XMLデータをファイルに出力する ///////////////////////////////////////////////
file.Write( xml );
これで最近集めたxml関係のブックマークをXBELで出力して、xbel-1.0.xslと
一緒に「TS Networkのために」ホームページにアップロードしました。
http://homepage1.nifty.com/kazuf/bookmarks.xml
でその結果を見ることができます。大変便利ですね。IE6で見ましょう(^^;)その
うちHTMLに変換してアップします。
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/