XPath の文字列比較で、小文字と大文字を区別しない方法
.NET の XML DOM を使って、XPath の文字列比較によって、大文字、小文字を区別することなく、ノードをセレクトする方法を紹介する。
一般的な言語系であれば、文字列比較関数で、大文字、小文字を区別することなく、文字列を一致させるオプションが用意されていることは普通だ。しかし、XPath では、そのような関数のオプションは用意されていないようだ。
translate() 関数を応用することによって実現する。
まず、translate() 関数によって、検索対象ノード値文字列を小文字に変換する。
これは、string クラスの ToLowerString() メソッドに相当する。
translate(@targetAttribute, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')
あとは、通常の文字列比較によって、式を記述する。
以下は、object ノードより、deleted 属性が、false のノードのみを取得するサンプルコード。deleted 属性文字列は、大文字、小文字...
続きを読む
Windows 2008 R2 DNS サーバーのエラー 其の二
前回、以下のようなイベントが出力されている問題について記載した。
イベント ソース: DNS
イベント ID: 5504
DNS サーバーは、xx.xx.xx.xx からのパケットに無効なドメイン名を検出しました。パケットは拒否されます。イベント データに DNS パケットが含まれています。
前回は、このイベントが情報として出力されているので、大きな問題ではなく、精神衛生上の問題と考えていた。
しかしながら、評価環境の検証をすすめてゆくうちにこれが、想像を超えた大きな問題であることが発覚した。
このイベントが発生した時には、DNS での名前解決に失敗していることがわかったのだ。評価環境では、プライマリ DNS を Windows Server 2008 R2 で構築し、セカンダリ DNS をルータの DNS 機能を利用している。ここで、DNS クライアントは、プライマリ DNS での名前解決に失敗しても、セカンダリ DNS での名前解決で成功していたため、問題を見過ごしてしまっていた。非常に情けないことだ。
さらに構成として問題はあることは分かっていたが、Wind...
続きを読む
Windows 2008 R2 DNS サーバーのエラー
Windows 2008 R2 の検証環境で、Windows 標準の DNS サーバーを評価しているが、以下の情報がイベントログに出力されていた。エラーでは無いので、気にしないようにしていたが、精神衛生上良くないので、簡単に調査することとした。
イベント ソース: DNS
イベント ID: 5504
DNS サーバーは、xx.xx.xx.xx からのパケットに無効なドメイン名を検出しました。パケットは拒否されます。イベント データに DNS パケットが含まれています。
Windows 2008 R2 ではないが、Windows 2003 ベースで同様の KB が存在した。
5504 のイベントが Windows Server 2003 ベースの DNS サーバーが、DNAME のリソース レコードを含むパケットを受け取ったときに記録されます。
さらに、US のリソースを調べてみたところ、フォワード先の DNS が BIND だと、DNAME レコードというのが送信されてくるのだが、Windows の DNS はそれを解釈できないらしい。Windows 2...
続きを読む