1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.tika.sax.xpath; 18 19 /** 20 * XPath element matcher. A matcher instance encapsulates a specific 21 * state in XPath evaluation. 22 */ 23 public class Matcher { 24 25 /** 26 * State of a failed XPath evaluation, where nothing is matched. 27 * This matcher instance is used as a sentinel object whenever an 28 * XPath evaluation branch fails. 29 */ 30 public static final Matcher FAIL = new Matcher(); 31 32 /** 33 * Returns the XPath evaluation state that results from descending 34 * to a child element with the given name. 35 * 36 * @param namespace element namespace or <code>null</code> 37 * @param name element name 38 * @return next XPath evaluation state 39 */ 40 public Matcher descend(String namespace, String name) { 41 return FAIL; 42 } 43 44 /** 45 * Returns <code>true</code> if the XPath expression matches 46 * the element associated with this evaluation state. 47 * 48 * @return XPath evaluation state for this element 49 */ 50 public boolean matchesElement() { 51 return false; 52 } 53 54 /** 55 * Returns <code>true</code> if the XPath expression matches the named 56 * attribute of the element associated with this evaluation state. 57 * 58 * @param namespace attribute namespace or <code>null</code> 59 * @param name attribute name 60 * @return XPath evaluation state for named attribute of this element 61 */ 62 public boolean matchesAttribute(String namespace, String name) { 63 return false; 64 } 65 66 /** 67 * Returns <code>true</code> if the XPath expression matches all text 68 * nodes whose parent is the element associated with this evaluation 69 * state. 70 * 71 * @return XPath evaluation state for text children of this element 72 */ 73 public boolean matchesText() { 74 return false; 75 } 76 77 }