use of org.sirix.api.Filter in project sirix by sirixdb.
the class XPathParser method parseElementTest.
// /**
// * Parses the the rule AttributeDeclaration according to the following
// * production rule:
// * <p>
// * [62] AttributeDeclaration ::= AttributeName .
// * </p>
// */
// private String parseAttributeDeclaration() {
//
// return parseAttributeName();
// }
/**
* Parses the the rule ElementTest according to the following production rule:
* <p>
* [63] ElementTest ::= <"element" "("> (ElementNameOrWildcard ("," TypeName "?"?)?)? ")" .
* </p>
*
* @return filter
*/
private Filter parseElementTest() {
consume("element", true);
consume(TokenType.OPEN_BR, true);
Filter filter = new ElementFilter(getTransaction());
if (!(mToken.getType() == TokenType.CLOSE_BR)) {
final String mName = parseElementNameOrWildcard();
if (!mName.equals("*")) {
filter = new NestedFilter(getTransaction(), filter, new NameFilter(getTransaction(), mName));
}
if (is(TokenType.COMMA, true)) {
filter = new NestedFilter(getTransaction(), filter, new TypeFilter(getTransaction(), parseTypeName()));
if (is(TokenType.INTERROGATION, true)) {
// be false
throw new NoSuchElementException("'?' is not supported yet.");
}
}
}
consume(TokenType.CLOSE_BR, true);
return filter;
}
use of org.sirix.api.Filter in project sirix by sirixdb.
the class XPathParser method parseDocumentTest.
/**
* Parses the the rule DocumentCreater according to the following production rule:
* <p>
* [55] DocumentCreater ::= <"document-node" "("> (ElementTest | SchemaElementTest)? ")" .
* <p>
*
* @return filter
*/
private Filter parseDocumentTest() {
consume("document-node", true);
consume(TokenType.OPEN_BR, true);
Filter filter = new DocumentRootNodeFilter(getTransaction());
Filter innerFilter;
if (mToken.getContent().equals("element")) {
innerFilter = parseElementTest();
filter = new NestedFilter(getTransaction(), filter, innerFilter);
} else if (mToken.getContent().equals("schema-element")) {
innerFilter = parseSchemaElementTest();
filter = new NestedFilter(getTransaction(), filter, innerFilter);
}
consume(TokenType.CLOSE_BR, true);
return filter;
}
use of org.sirix.api.Filter in project sirix by sirixdb.
the class XPathParser method parseKindTest.
/**
* Parses the the rule KindTest according to the following production rule:
* <p>
* [53] KindTest ::= DocumentCreater | ElementTest | AttributeTest | SchemaElementTest |
* SchemaAttributeTest | PITest | CommentTest | TextTest | AnyKindTest .
* </p>
*
* @return filter
*/
private Filter parseKindTest() {
Filter filter;
final String test = mToken.getContent();
if ("document-node".equals(test)) {
filter = parseDocumentTest();
} else if ("element".equals(test)) {
filter = parseElementTest();
} else if ("attribute".equals(test)) {
filter = parseAttributeTest();
} else if ("schema-element".equals(test)) {
filter = parseSchemaElementTest();
} else if ("schema-attribute".equals(test)) {
filter = parseSchemaAttributeTest();
} else if ("processing-instruction".equals(test)) {
filter = parsePITest();
} else if ("comment".equals(test)) {
filter = parseCommentTest();
} else if ("text".equals(test)) {
filter = parseTextTest();
} else {
filter = parseAnyKindTest();
}
return filter;
}
Aggregations