Элегантный способ указать, какие части дерева включать / исключать - PullRequest
0 голосов
/ 15 января 2011

Предположим, у вас есть дерево (в качестве примера я буду использовать дерево HTML DOM, но вопрос о любом виде дерева). Вы хотите отфильтровать дерево, чтобы включить определенные ветви и исключить другие. Иногда вы исключаете ветку, за исключением некоторых элементов в ней, которые вы хотите сохранить.

Есть ли у кого-нибудь элегантный способ выразить это (текстовое представление или, возможно, свободный интерфейс для создания и управления таким древовидным фильтром)?

например. для HTML DOM правила могут выглядеть примерно так ...

  (-head, +body>(-footer, -header, +content>(-table>+tr)))

, что может означать: спуститься по дереву, если вы нажмете на элемент head, игнорируйте его и все, что находится под ним, включите элемент body, но внутри него исключите нижние колонтитулы и верхние колонтитулы и включите содержимое, кроме таблиц, где нам нужны только строки таблицы. Это правило не затрагивает проблему потомков против прямых потомков, что может быть чем-то еще, что пользователь может захотеть указать.

Является ли древовидный подход к определению правил или последовательного списка путей включения / исключения лучшим способом помочь пользователю выбрать, что сохранить и что исключить?

Есть ли идеи / предложения относительно альтернативных способов представления таких правил включения / исключения?

Ответы [ 2 ]

0 голосов
/ 16 января 2011

XPath?И использовать разные методы / наборы для включения / исключения.Я думаю, что использовать существующий язык, который используется для выбора узла, лучше, чем придумывать собственный.Другим будет легче понять и т. Д.

0 голосов
/ 16 января 2011

XPath приходит на ум.

...