Сортировка выражений XPath в порядке документов - PullRequest
3 голосов
/ 29 апреля 2010

Мне нужно оценить несколько выражений XPath для документа. Документы большие, поэтому мы используем потоковый анализатор. Выражения XPath просто возвращают значение узла. Мне нужно упорядочить выражения XPath так, чтобы они находились в порядке документа (поскольку после оценки выражения оценка следующего выражения начинается с той точки в документе, где было найдено последнее значение). У меня есть схема для документа, но я не уверен, как использовать ее для установления порядка.

Я использую C # с .NET 4, если это имеет значение. Если бы кто-то мог указать мне правильное направление, я был бы признателен за это!

FOLLOWUP: как отметил Димитр, это невозможно с полным XPath. Ограничив выражения Потоковым профилем подписи XML , я смог построить дерево, в котором каждый узел содержал имя элемента и порядковый номер (порядок, в котором он появился в схеме). Как только я построил дерево, я прошел через XPath, собрав позиции в списке. После того, как у меня был список позиций, стало легко сравнивать списки и определять относительные позиции.

1 Ответ

1 голос
/ 29 апреля 2010

Это невозможно без наложения некоторых ограничений на выражения XPath .

Например, , любое выражение XPath, содержащее оси descendant::, descendant-or-self::, ancestor::, ancestor-or-self::, preceding::, following:: и даже оси preceding-sibling:: и following-sibling:: - может потребоваться полное чтение документа XML.

Если выражения XPath не содержат этих осей , вы можете расположить их по количеству шагов определения местоположения (они также не должны содержать parent:: или ..), и вы можете временно прекратить вычисление любого выражения с числом путей местоположения, меньших текущей глубины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...