diff options
author | Jeff Hamilton <jham@android.com> | 2012-10-04 22:36:33 -0500 |
---|---|---|
committer | Jeff Hamilton <jham@android.com> | 2012-10-04 22:36:33 -0500 |
commit | 19ac41ff0a6abe72109d591ddcf741d8b9e06ddb (patch) | |
tree | 5dd81f14724b29d6e356e746ed2b1601f1951f52 /XMPCore/src/com/adobe/xmp/XMPSchemaRegistry.java | |
parent | 3960586f08fe6d3579586d4225f90bd00345254f (diff) | |
parent | 8a77d871a2c7038915d528bcfbc360ef69b6eea0 (diff) | |
download | xmp_toolkit-19ac41ff0a6abe72109d591ddcf741d8b9e06ddb.tar.gz |
Merge commit '8a77d871a2c7038915d528bcfbc360ef69b6eea0' into masterandroid-4.3_r3.1android-4.3_r3android-4.3_r2.3android-4.3_r2.2android-4.3_r2.1android-4.3_r2android-4.3_r1.1android-4.3_r1android-4.3_r0.9.1android-4.3_r0.9android-4.3.1_r1tools_r22.2jb-mr2.0.0-releasejb-mr2.0-releasejb-mr2-releasejb-mr2-dev
Diffstat (limited to 'XMPCore/src/com/adobe/xmp/XMPSchemaRegistry.java')
-rw-r--r-- | XMPCore/src/com/adobe/xmp/XMPSchemaRegistry.java | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/XMPCore/src/com/adobe/xmp/XMPSchemaRegistry.java b/XMPCore/src/com/adobe/xmp/XMPSchemaRegistry.java new file mode 100644 index 0000000..4608a8e --- /dev/null +++ b/XMPCore/src/com/adobe/xmp/XMPSchemaRegistry.java @@ -0,0 +1,180 @@ +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2006 Adobe Systems Incorporated +// All Rights Reserved +// +// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms +// of the Adobe license agreement accompanying it. +// ================================================================================================= + +package com.adobe.xmp; + +import java.util.Map; + +import com.adobe.xmp.properties.XMPAliasInfo; + +/** + * The schema registry keeps track of all namespaces and aliases used in the XMP + * metadata. At initialisation time, the default namespaces and default aliases + * are automatically registered. <b>Namespaces</b> must be registered before + * used in namespace URI parameters or path expressions. Within the XMP Toolkit + * the registered namespace URIs and prefixes must be unique. Additional + * namespaces encountered when parsing RDF are automatically registered. The + * namespace URI should always end in an XML name separator such as '/' or '#'. + * This is because some forms of RDF shorthand catenate a namespace URI with an + * element name to form a new URI. + * <p> + * <b>Aliases</b> in XMP serve the same purpose as Windows file shortcuts, + * Macintosh file aliases, or UNIX file symbolic links. The aliases are simply + * multiple names for the same property. One distinction of XMP aliases is that + * they are ordered, there is an alias name pointing to an actual name. The + * primary significance of the actual name is that it is the preferred name for + * output, generally the most widely recognized name. + * <p> + * The names that can be aliased in XMP are restricted. The alias must be a top + * level property name, not a field within a structure or an element within an + * array. The actual may be a top level property name, the first element within + * a top level array, or the default element in an alt-text array. This does not + * mean the alias can only be a simple property. It is OK to alias a top level + * structure or array to an identical top level structure or array, or to the + * first item of an array of structures. + * + * @since 27.01.2006 + */ +public interface XMPSchemaRegistry +{ + // --------------------------------------------------------------------------------------------- + // Namespace Functions + + /** + * Register a namespace URI with a suggested prefix. It is not an error if + * the URI is already registered, no matter what the prefix is. If the URI + * is not registered but the suggested prefix is in use, a unique prefix is + * created from the suggested one. The actual registeed prefix is always + * returned. The function result tells if the registered prefix is the + * suggested one. + * <p> + * Note: No checking is presently done on either the URI or the prefix. + * + * @param namespaceURI + * The URI for the namespace. Must be a valid XML URI. + * @param suggestedPrefix + * The suggested prefix to be used if the URI is not yet + * registered. Must be a valid XML name. + * @return Returns the registered prefix for this URI, is equal to the + * suggestedPrefix if the namespace hasn't been registered before, + * otherwise the existing prefix. + * @throws XMPException If the parameters are not accordingly set + */ + String registerNamespace(String namespaceURI, String suggestedPrefix) throws XMPException; + + + /** + * Obtain the prefix for a registered namespace URI. + * <p> + * It is not an error if the namespace URI is not registered. The output + * namespacePrefix string is not modified if the namespace URI is not + * registered. + * + * @param namespaceURI + * The URI for the namespace. Must not be null or the empty + * string. + * @return Returns true if the namespace URI is registered. + */ + String getNamespacePrefix(String namespaceURI); + + + /** + * Obtain the URI for a registered namespace prefix. + * <p> + * It is not an error if the namespace prefix is not registered. The output + * namespaceURI string is not modified if the namespace prefix is not + * registered. + * + * @param namespacePrefix + * The prefix for the namespace. Must not be null or the empty + * string. + * @return Returns the URI registered for this prefix. + */ + String getNamespaceURI(String namespacePrefix); + + + /** + * @return Returns the registered prefix/namespace-pairs as map, where the keys are the + * namespaces and the values are the prefixes. + */ + Map getNamespaces(); + + + /** + * @return Returns the registered namespace/prefix-pairs as map, where the keys are the + * prefixes and the values are the namespaces. + */ + Map getPrefixes(); + + + /** + * Deletes a namespace from the registry. + * <p> + * Does nothing if the URI is not registered, or if the namespaceURI + * parameter is null or the empty string. + * <p> + * Note: Not yet implemented. + * + * @param namespaceURI + * The URI for the namespace. + */ + void deleteNamespace(String namespaceURI); + + + + + + // --------------------------------------------------------------------------------------------- + // Alias Functions + + + /** + * Determines if a name is an alias, and what it is aliased to. + * + * @param aliasNS + * The namespace URI of the alias. Must not be <code>null</code> or the empty + * string. + * @param aliasProp + * The name of the alias. May be an arbitrary path expression + * path, must not be <code>null</code> or the empty string. + * @return Returns the <code>XMPAliasInfo</code> for the given alias namespace and property or + * <code>null</code> if there is no such alias. + */ + XMPAliasInfo resolveAlias(String aliasNS, String aliasProp); + + + /** + * Collects all aliases that are contained in the provided namespace. + * If nothing is found, an empty array is returned. + * + * @param aliasNS a schema namespace URI + * @return Returns all alias infos from aliases that are contained in the provided namespace. + */ + XMPAliasInfo[] findAliases(String aliasNS); + + + /** + * Searches for registered aliases. + * + * @param qname + * an XML conform qname + * @return Returns if an alias definition for the given qname to another + * schema and property is registered. + */ + XMPAliasInfo findAlias(String qname); + + + /** + * @return Returns the registered aliases as map, where the key is the "qname" (prefix and name) + * and the value an <code>XMPAliasInfo</code>-object. + */ + Map getAliases(); + + +}
\ No newline at end of file |