We rise up for the things we believe in over and over again

Впервые довелось воспользоваться XPath-фильтром при работе с логами Windows. Это кусок боли, причем с двух сторон. Сначала взвыл, поглядев на структуру сообщений об удалении файлов с ресурсов севрера. Обычно же как:
C этим все просто и понятно. А вот фигвам! Имеем вот такой шаблон:
Энто ж как же, вашу мать, извиняюсь, понимать? (с) бессмертный Филатов.
Повторюсь, с простыми нодами все хорошо, они скриптуются на ура. С нодами при поддержке аттрибутов тоже особых проблем нет. Но вот ноды с аттрибутами и значениями. Каким синтаксисом их утрамбовывать? Как оказалось, в Xpath можно использовать два варианта - через квадратные скобки и через слэши. Второй вариант мне ближе, так что пишем:
Это выберет сообщения, в которых есть указанная нода с указанным аттрибутом и нужным значением этой ноды.
Выбирать можно и по аттрибутам:
Проверяется только значение attribute1, без значения самой ноды, если такого, например, нет вовсе.
Само собой, логические операторы тоже поддерживаются:
Вроде бы и ничего особо сложного, но только когда хоть малость привыкнешь. А до тех пор - bite the bullet, как говорится. А я еще, помнится, на вычисляемые поля в select-object ругался. Тоже долго с тамошнему синтаксису привыкал, со всеми скобочками, точками с запятой, кавычками. Удобная штука, эти вычисляемые поля, не спорю, но прописывать их запаришься.
В общем, основное правило при работе с XPath - вложенные ноды - через слэш, аттрибут рассматриваемой ноды - в квадратные скобки через comm-at - @.