8a133ea9c6a8867c38c6b9652927dc3f8c73e6c2
[mir.git] / source / mir / xml / XmlMatch.java
1 package mir.xml;
2
3 import java.util.*;
4 import java.util.StringTokenizer;
5
6 /** micro-XPath match - match a path
7  */
8 class XmlMatch {
9     String names[]=new String[10]; //max path depth
10     int pos=0;
11
12     public XmlMatch( String tagName ) {
13         StringTokenizer st=new StringTokenizer( tagName, "/" );
14         while( st.hasMoreTokens() ) {
15             names[pos]=st.nextToken();
16             pos++;
17         }
18     }
19
20     public boolean match( SaxContext ctx ) {
21         int depth=ctx.getTagCount();
22
23         for( int j=pos-1; j>=0; j--) {
24             if( depth<1) {
25                 //              System.out.println("Pattern too long ");
26                 return false;
27             }
28             String tag=ctx.getTag(depth-1);
29             if( ! names[j].equals( tag ) ) {
30                 //              System.out.println("XXX" + names[j] + " " + tag);
31                 return false;
32             }
33             depth--;
34         }
35
36
37         return true;
38     }
39
40     public String toString() {
41         return "Tag("+names+")";
42     }
43
44 }
45