IT ニュース&コラム 2017/ 9/25 通巻747号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ XML に変数が使えるようになる vbslib の LazyDictionaryClass ■■ vbslib の LazyDictionaryClass を使うと変数が使える XML に簡単に対応できる ようになります。(変数が使えるかどうかは、XML をロードするスクリプトに よります。) vbslib は、以下からダウンロードできます。 Windows 用です。 http://vbslib.osdn.jp/ http://www.sage-p.com/vbslib/vbslib.htm https://github.com/TsNeko/vbslib vbslib では、Variable タグを変数定義として扱います。 これは、変数 ${Var1} の値が ABC であることを定義しています。 ちなみに、XSL には変数の仕様があり、XSL の変数の定義は以下のように書きます。 始めは、xsl:variable タグと同じ仕様にしようと考えたのですが、XSL の name 属性と 異なり、Variable タグの name 属性には $ も含める仕様にしました。 Var1 と ${Var1} を比べて見たとき、Var1 は変数ではないと認識しますよね。 いくら ${ } の文字が変数の 名前の部分ではないと言われても認識するときは関係ないです。 W3C の関係者は、 その辺のセンスがないですね。 それに、定義を検索するときは、${Var1} を検索キーワード にするでしょうから、それでヒットしないのは不便です。 なお、XML は文字列型しかない ので、XSL のように ' ' で囲む必要はありません。 変数を使って、XML データを表現する例を挙げます。 テキスト(タグの間)でも、 属性値でも使えます。 123${Var1}456 vbslib の XML の変数は、XML の仕様を変えるわけではないので、XML をパースして 取得できる値は、変数が展開された値ではありません。 変数展開をする関数を呼ぶ 必要があります。 しかし、それはとても簡単です。 比較のために、まず、変数を 使わずに XML をパースするスクリプトを示します。 path_of_XML = "Sample.xml" Set root = LoadXML( path_of_XML, Empty ) '// LoadXML は vbslib の関数 value_with_variable = root.selectSingleNode( "Tag" ).getAttribute( "value" ) 次に、XML をパースして変数を展開するスクリプトを示します。 2行追加するだけです。 path_of_XML = "Sample.xml" Set root = LoadXML( path_of_XML, Empty ) Set variables = LoadVariableInXML( root, path_of_XML ) '// ★追加 value_with_variable = root.selectSingleNode( "Tag" ).getAttribute( "value" ) value = variables( value_with_variable ) '// ★追加 3行目は、すべての Variable タグによる変数の定義が入った LazyDictionaryClass のオブジェクトを variables 変数に代入しています。 5行目は、変数を展開しています。 たとえば、value_with_variable の値が 123${Var1}456 なら、value の値は、123ABC456 になります。 Variable タグは、変数を参照している位置の上に書いても下に書いても構いません。 それができるのも、前回説明したように LazyDictionaryClass が遅延評価するから、 変数に値を代入する順序に依存しなくなるからです。 ■■ 注目ニュース 一覧 ■■ ◇ Nintendo Switchには特定の日付&アクションで起動する隠しゲームあり、故・岩田聡氏の命日に起動。 http://gigazine.net/news/20170921-nintendo-switch-hidden-golf/ … 来年の7月11に起動できるだろうか。 ◇ iOS 11では32bitアプリが動かず。タイトーはゲームアプリ5つを配信終了に。 http://www.itmedia.co.jp/mobile/articles/1709/19/news129.html … iOSにアップデートすると動かなくなるアプリケーションが多い。 ◇ iOS 11では操作画面の録画が可能に。 http://www.itmedia.co.jp/mobile/articles/1709/20/news056.html … SNSに動画の投稿が増え、通信量が増えそう。 ◇ Google、HTCのスマホ部門を買収。HTC PixelチームがGoogleに移籍。HTCは自社スマホ継続。 http://pc.watch.impress.co.jp/docs/news/1081890.html … またモトローラと同じように権利だけ頂戴して売却するだろう。 ◇ 壁面に埋め込むWi-Fiアクセスポイント、エレコムが法人向けに販売。 http://internet.watch.impress.co.jp/docs/news/1081656.html … インターネット付き住宅が有線から無線へ。 ◇ 日本は周回遅れ。業界の垣根を越えた77社が取り組む“暮らしのIoT。 http://www.itmedia.co.jp/lifestyle/articles/1709/15/news120.html … オープンな標準化と競争力がつく部分への集中が普及のカギ。 ◇ GoogleドライブのAndroidバックアップは2週間使わないと2カ月後に削除される。 http://www.itmedia.co.jp/mobile/articles/1709/19/news054.html … Androidが2台目の人は注意。 ◇ 総務省とNICT、さまざまな分野の翻訳データ1億文の集積目指す 翻訳バンク。 https://japan.cnet.com/article/35107027/ … 英語が必要なら、最終的にはオープンデータにすべき。 ◇ なんと約880万件、URL短縮サービス終了により発行済みの短縮URLがすべて無効化。 http://internet.watch.impress.co.jp/docs/yajiuma/1081357.html … オープンデータにしても問題ないのでは。 ◇ オンライン海賊版はコンテンツ売上にネガティブな影響を与えないという報告書を発表せず。 http://gigazine.net/news/20170922-copyright-piracy-not-harmful/ … 有名でなければ、広告効果があるだけ。 ただし、有料サイトも存在しなければ影響も何もない。 ◇ Java EEの策定はEclipse Foundationへ、オラクルからの移管を発表。 http://www.publickey1.jp/blog/17/java_ee_eclipse_foundation.html … Google との裁判が一段落したからか。 ■■ ソフトウェアデザイン館 Sage Plaisir 21 ■■ ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm