descendant-or-self::*[contains(@prop,'Foo')]
Или:
/bla/a[contains(@prop,'Foo')]
Или:
/bla/a[position() <= 3]
Разделенный:
descendant-or-self::
Ось - перерывают каждый узел внизу и сам узел. Часто лучше сказать это, чем//. Я встретился с некоторыми реализациями, где//означает где угодно (потомок или сам корневого узла). Другое использование ось по умолчанию.
* or /bla/a
Тег - подстановочное соответствие и/bla/a являются полным путем.
[contains(@prop,'Foo')] or [position() <= 3]
условие в []. @prop является стенографией для атрибута:: опора, поскольку атрибут является другой поисковой осью. Кроме того, можно выбрать первые 3 при помощи положения () функция.
Библиотека графов ускорения (BGL) предлагает тип MutablePropertyGraph
, внутри которого каждое ребро и вершина могут сохранять вес как свойство. См. Пример здесь , который строит ориентированный граф со взвешенными ребрами.
В вашем списке смежности, вместо того, чтобы хранить только индексы соседнего узла, пусть он хранит структуру, которая содержит индексы соседнего узла, и значение для ребра, соединяющего эти узлы.