package org.xmlsh.util;
import java.util.Comparator;
import java.util.function.Function;
import javax.xml.namespace.QName;
public interface INamingStrategy {
QName toXmlName(String name);
String fromXmlName(QName qname);
static class NamingStrategy implements INamingStrategy {
private Function<String,QName> toXml;
private Function<QName,String> fromXml ;
public NamingStrategy(
Function<QName,String> from,
Function<String, QName> to ) {
fromXml = from ;
toXml = to ;
}
@Override
public QName toXmlName(String name) {
return toXml.apply(name);
}
@Override
public String fromXmlName(QName qname) {
return fromXml.apply(qname);
}
};
static INamingStrategy DefaultNamingStrategy =
new NamingStrategy(
Util::decodeFromQName ,
Util::encodeForQName );
static INamingStrategy SimpleNamingStrategy =
new NamingStrategy(
Util::decodeFromQNameSimple ,
Util::encodeForQNameSimple );
static INamingStrategy LocalNamingStrategy =
new NamingStrategy(
q -> q.getLocalPart() ,
QName::new
) ;
}