package com.thaiopensource.relaxng.pattern; import com.thaiopensource.xml.util.Name; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Computes the normalized intersection of zero or more name classes. */ public class IntersectionNameClassNormalizer extends AbstractNameClassNormalizer { private final List<NameClass> nameClasses = new ArrayList<NameClass>(); public void add(NameClass nc) { nameClasses.add(nc); } protected void accept(NameClassVisitor visitor) { for (NameClass nameClass : nameClasses) (nameClass).accept(visitor); } protected boolean contains(Name name) { Iterator<NameClass> iter = nameClasses.iterator(); if (!iter.hasNext()) return false; for (;;) { if (!(iter.next()).contains(name)) return false; if (!iter.hasNext()) break; } return true; } }