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... 続きを読む