org.hisrc.jsonix.Jsonix.Schema.XSD.QName.js Maven / Gradle / Ivy
Jsonix.Schema.XSD.QName = Jsonix.Class(Jsonix.Schema.XSD.AnySimpleType, {
name : 'QName',
typeName : Jsonix.Schema.XSD.qname('QName'),
print : function(value, context, output, scope) {
var qName = Jsonix.XML.QName.fromObject(value);
var prefix;
var localPart = qName.localPart;
if (output) {
// If QName does not provide the prefix, let it be generated
prefix = output.getPrefix(qName.namespaceURI, qName.prefix||null);
output.declareNamespace(qName.namespaceURI, prefix);
} else {
prefix = qName.prefix;
}
return !prefix ? localPart : (prefix + ':' + localPart);
},
parse : function(value, context, input, scope) {
Jsonix.Util.Ensure.ensureString(value);
value = Jsonix.Util.StringUtils.trim(value);
var prefix;
var localPart;
var colonPosition = value.indexOf(':');
if (colonPosition === -1) {
prefix = '';
localPart = value;
} else if (colonPosition > 0 && colonPosition < (value.length - 1)) {
prefix = value.substring(0, colonPosition);
localPart = value.substring(colonPosition + 1);
} else {
throw new Error('Invalid QName [' + value + '].');
}
var namespaceContext = input || context || null;
if (!namespaceContext)
{
return value;
}
else
{
var namespaceURI = namespaceContext.getNamespaceURI(prefix);
if (Jsonix.Util.Type.isString(namespaceURI))
{
return new Jsonix.XML.QName(namespaceURI, localPart, prefix);
}
else
{
throw new Error('Prefix [' + prefix + '] of the QName [' + value + '] is not bound in this context.');
}
}
},
isInstance : function(value, context, scope) {
return (value instanceof Jsonix.XML.QName) || (Jsonix.Util.Type.isObject(value) && Jsonix.Util.Type.isString(value.localPart || value.lp));
},
CLASS_NAME : 'Jsonix.Schema.XSD.QName'
});
Jsonix.Schema.XSD.QName.INSTANCE = new Jsonix.Schema.XSD.QName();
Jsonix.Schema.XSD.QName.INSTANCE.LIST = new Jsonix.Schema.XSD.List(
Jsonix.Schema.XSD.QName.INSTANCE);
© 2015 - 2024 Weber Informatics LLC | Privacy Policy