001 package ezvcard.io.xml;
002
003 import java.util.Arrays;
004 import java.util.Iterator;
005
006 import javax.xml.namespace.NamespaceContext;
007 import javax.xml.xpath.XPath;
008
009 import ezvcard.VCardVersion;
010
011 /**
012 * Used for xCard XPath expressions.
013 * @see XPath#setNamespaceContext(NamespaceContext)
014 * @author Michael Angstadt
015 */
016 public class XCardNamespaceContext implements NamespaceContext {
017 private final String ns;
018 private final String prefix;
019
020 /**
021 * @param version the vCard version to use
022 * @param prefix the prefix to use
023 */
024 public XCardNamespaceContext(VCardVersion version, String prefix) {
025 this.ns = version.getXmlNamespace();
026 this.prefix = prefix;
027 }
028
029 /**
030 * Gets the prefix to use in xpath expressions.
031 * @return the xpath prefix
032 */
033 public String getPrefix() {
034 return prefix;
035 }
036
037 //@Override
038 public String getNamespaceURI(String prefix) {
039 if (this.prefix.equals(prefix)) {
040 return ns;
041 }
042 return null;
043 }
044
045 //@Override
046 public String getPrefix(String ns) {
047 if (this.ns.equals(ns)) {
048 return prefix;
049 }
050 return null;
051 }
052
053 //@Override
054 public Iterator<String> getPrefixes(String ns) {
055 if (this.ns.equals(ns)) {
056 return Arrays.asList(prefix).iterator();
057 }
058 return null;
059 }
060 }