builder.append('%');
}
List<Component> predicates = axis.getPredicates();
if (!predicates.isEmpty()) {
assert predicates.size() == 1;
Component predicate = predicates.get(0);
if (predicate instanceof Literal && ((Literal)predicate).isInteger()) {
builder.append('[').append(((Literal)predicate).getValue()).append(']');
}
}
}
} else if (step instanceof FilterStep) {
FilterStep filter = (FilterStep)step;
Component primary = filter.getPrimaryExpression();
if (primary instanceof ContextItem) {
continue; // ignore this '.'
} else if (primary instanceof ParenthesizedExpression) {
ParenthesizedExpression paren = (ParenthesizedExpression)primary;
Component wrapped = paren.getWrapped().collapse();
if (wrapped instanceof AttributeNameTest) {
// ignore this; handled earlier ...
} else if (wrapped instanceof BinaryComponent) {
List<NameTest> names = extractElementNames((BinaryComponent)wrapped);
if (names.size() >= 1) {