#include <TXMPMeta.hpp>
Public Member Functions | |
bool | GetLocalizedText (XMP_StringPtr schemaNS, XMP_StringPtr altTextName, XMP_StringPtr genericLang, XMP_StringPtr specificLang, tStringObj *actualLang, tStringObj *itemValue, XMP_OptionBits *options) const |
GetLocalizedText returns information about a selected item in an alt-text array. The array item is selected according to the rules given above. | |
void | SetLocalizedText (XMP_StringPtr schemaNS, XMP_StringPtr altTextName, XMP_StringPtr genericLang, XMP_StringPtr specificLang, XMP_StringPtr itemValue, XMP_OptionBits options=0) |
SetLocalizedText modifies the value of a selected item in an alt-text array. Creates an appropriate array item if necessary, and handles special cases for the x-default item. | |
void | SetLocalizedText (XMP_StringPtr schemaNS, XMP_StringPtr altTextName, XMP_StringPtr genericLang, XMP_StringPtr specificLang, const tStringObj &itemValue, XMP_OptionBits options=0) |
This form of SetLocalizedText is a simple overload in the template that calls the above form passing itemValue.c_str() . | |
Constructors and destructor | |
TXMPMeta () | |
Default constructor, creates an empty object. | |
TXMPMeta (const TXMPMeta< tStringObj > &original) | |
Copy constructor, creates a client object refering to the same internal object. | |
void | operator= (const TXMPMeta< tStringObj > &rhs) |
Assignment operator, assigns the internal ref and increments the ref count. | |
TXMPMeta (XMPMetaRef xmpRef) | |
Reconstruct an XMP object from an internal ref. | |
TXMPMeta (XMP_StringPtr buffer, XMP_StringLen xmpSize) | |
Construct an object and parse one buffer of RDF into it. | |
virtual | ~TXMPMeta () throw () |
Destructor, typical virtual destructor. | |
Functions for getting property values | |
The property value "getters" all take a property specification, The first two parameters are always the top level namespace URI (the "schema" namespace) and the basic name of the property being referenced. See the introductory discussion of XPath expression usage for more information. All of the functions return a Boolean result telling if the property exists, and if it does they also return option flags describing the property. If the property exists and has a value, the string value is also returned. The string is Unicode in UTF-8 encoding. Arrays and the non-leaf levels of structs do not have values. The possible option flags that describe properties are:
| |
bool | GetProperty (XMP_StringPtr schemaNS, XMP_StringPtr propName, tStringObj *propValue, XMP_OptionBits *options) const |
GetProperty is the simplest property getter, mainly for top level simple properties or after using the XPath composition functions in TXMPUtils . | |
bool | GetArrayItem (XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, tStringObj *itemValue, XMP_OptionBits *options) const |
GetArrayItem provides access to items within an array. The index is passed as an integer, you need not worry about the XPath string syntax for array items, convert a loop index to a string, etc. | |
bool | GetStructField (XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, tStringObj *fieldValue, XMP_OptionBits *options) const |
GetStructField provides access to fields within a nested structure. The namespace for the field is passed as a URI, you need not worry about the XPath string syntax. | |
bool | GetQualifier (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, tStringObj *qualValue, XMP_OptionBits *options) const |
GetQualifier provides access to a qualifier attached to a property. The namespace for the qualifier is passed as a URI, you need not worry about the XPath string syntax. In many regards qualifiers are like struct fields. See the introductory discussion of qualified properties for more information. | |
Functions for setting property values | |
The property value "setters" all take a property specification, their differences are in the form of this. The first two parameters are always the top level namespace URI (the "schema" namespace) and the basic name of the property being referenced. See the introductory discussion of XPath expression usage for more information.
All of the functions take a string value for the property and option flags describing the property. The value must be Unicode in UTF-8 encoding. Arrays and non-leaf levels of structs do not have values. Empty arrays and structs may be created using appropriate option flags. All levels of structs that is assigned implicitly are created if necessary.
The canonical form of these functions take the value as an The possible option flags are:
| |
void | SetProperty (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr propValue, XMP_OptionBits options=0) |
SetProperty is the simplest property setter, mainly for top level simple properties or after using the XPath composition functions in TXMPUtils . | |
void | SetProperty (XMP_StringPtr schemaNS, XMP_StringPtr propName, const tStringObj &propValue, XMP_OptionBits options=0) |
This form of SetProperty is a simple overload in the template that calls the above form passing propValue.c_str() . | |
void | SetArrayItem (XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, XMP_StringPtr itemValue, XMP_OptionBits options=0) |
SetArrayItem provides access to items within an array. The index is passed as an integer, you need not worry about the XPath string syntax for array items, convert a loop index to a string, etc. The array passed to SetArrayItem must already exist. See also AppendArrayItem . | |
void | SetArrayItem (XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, const tStringObj &itemValue, XMP_OptionBits options=0) |
This form of SetArrayItem is a simple overload in the template that calls the above form passing itemValue.c_str() . | |
void | AppendArrayItem (XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_OptionBits arrayOptions, XMP_StringPtr itemValue, XMP_OptionBits itemOptions=0) |
AppendArrayItem simplifies construction of an array by not requiring that you pre-create an empty array. The array that is assigned is created automatically if it does not yet exist. Each call to AppendArrayItem appends an item to the array. The corresponding parameters have the same use as SetArrayItem . The arrayOptions parameter is used to specify what kind of array. If the array exists, it must have the specified form. | |
void | AppendArrayItem (XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_OptionBits arrayOptions, const tStringObj &itemValue, XMP_OptionBits itemOptions=0) |
This form of AppendArrayItem is a simple overload in the template that calls the above form passing itemValue.c_str() . | |
void | SetStructField (XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, XMP_StringPtr fieldValue, XMP_OptionBits options=0) |
SetStructField provides access to fields within a nested structure. The namespace for the field is passed as a URI, you need not worry about the XPath string syntax. | |
void | SetStructField (XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, const tStringObj &fieldValue, XMP_OptionBits options=0) |
This form of SetStructField is a simple overload in the template that calls the above form passing fieldValue.c_str() . | |
void | SetQualifier (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, XMP_StringPtr qualValue, XMP_OptionBits options=0) |
SetQualifier provides access to a qualifier attached to a property. The namespace for the qualifier is passed as a URI, you need not worry about the XPath string syntax. In many regards qualifiers are like struct fields. See the introductory discussion of qualified properties for more information. | |
void | SetQualifier (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, const tStringObj &qualValue, XMP_OptionBits options=0) |
This form of SetQualifier is a simple overload in the template that calls the above form passing qualValue.c_str() . | |
Functions for deleting and detecting properties. | |
These should be obvious from the descriptions of the getters and setters. | |
void | DeleteProperty (XMP_StringPtr schemaNS, XMP_StringPtr propName) |
DeleteProperty deletes the given XMP subtree rooted at the given property. It is not an error if the property does not exist. | |
void | DeleteArrayItem (XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex) |
DeleteArrayItem deletes the given XMP subtree rooted at the given array item. It is not an error if the array item does not exist. | |
void | DeleteStructField (XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName) |
DeleteStructField deletes the given XMP subtree rooted at the given struct field. It is not an error if the field does not exist. | |
void | DeleteQualifier (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName) |
DeleteQualifier deletes the given XMP subtree rooted at the given qualifier. It is not an error if the qualifier does not exist. | |
bool | DoesPropertyExist (XMP_StringPtr schemaNS, XMP_StringPtr propName) const |
DoesPropertyExist tells if the property exists. | |
bool | DoesArrayItemExist (XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex) const |
DoesArrayItemExist tells if the array item exists. | |
bool | DoesStructFieldExist (XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName) const |
DoesStructFieldExist tells if the struct field exists. | |
bool | DoesQualifierExist (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName) const |
DoesQualifierExist tells if the qualifier exists. | |
Functions accessing properties as binary values. | |
These are very similar to GetProperty and SetProperty above, but the value is returned or provided in binary form instead of as a UTF-8 string. The XPath composition functions in TXMPUtils may be used to compose an XPath expression for fields in nested structures, items in arrays, or qualifiers. | |
bool | GetProperty_Bool (XMP_StringPtr schemaNS, XMP_StringPtr propName, bool *propValue, XMP_OptionBits *options) const |
GetProperty_Bool returns the value of a Boolean property as a C++ bool. | |
bool | GetProperty_Int (XMP_StringPtr schemaNS, XMP_StringPtr propName, long *propValue, XMP_OptionBits *options) const |
GetProperty_Int returns the value of an integer property as a C long integer. | |
bool | GetProperty_Int64 (XMP_StringPtr schemaNS, XMP_StringPtr propName, long long *propValue, XMP_OptionBits *options) const |
GetProperty_Int64 returns the value of an integer property as a C long long integer. | |
bool | GetProperty_Float (XMP_StringPtr schemaNS, XMP_StringPtr propName, double *propValue, XMP_OptionBits *options) const |
GetProperty_Float returns the value of a flaoting point property as a C double float. | |
bool | GetProperty_Date (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_DateTime *propValue, XMP_OptionBits *options) const |
GetProperty_Date returns the value of a date/time property as an XMP_DateTime struct. | |
void | SetProperty_Bool (XMP_StringPtr schemaNS, XMP_StringPtr propName, bool propValue, XMP_OptionBits options=0) |
SetProperty_Bool sets the value of a Boolean property from a C++ bool. | |
void | SetProperty_Int (XMP_StringPtr schemaNS, XMP_StringPtr propName, long propValue, XMP_OptionBits options=0) |
SetProperty_Int sets the value of an integer property from a C long integer. | |
void | SetProperty_Int64 (XMP_StringPtr schemaNS, XMP_StringPtr propName, long long propValue, XMP_OptionBits options=0) |
SetProperty_Int64 sets the value of an integer property from a C long long integer. | |
void | SetProperty_Float (XMP_StringPtr schemaNS, XMP_StringPtr propName, double propValue, XMP_OptionBits options=0) |
SetProperty_Float sets the value of a floating point property from a C double float. | |
void | SetProperty_Date (XMP_StringPtr schemaNS, XMP_StringPtr propName, const XMP_DateTime &propValue, XMP_OptionBits options=0) |
SetProperty_Date sets the value of a date/time property from an XMP_DateTime struct. | |
Misceallaneous functions. | |
XMPMetaRef | GetInternalRef () const |
GetInternalRef Returns an internal reference that may be safely passed across DLL boundaries and reconstructed. | |
void | GetObjectName (tStringObj *name) const |
GetObjectName --TBD--. | |
void | SetObjectName (XMP_StringPtr name) |
SetObjectName --TBD--. | |
void | SetObjectName (tStringObj name) |
SetObjectName --TBD--. | |
XMP_OptionBits | GetObjectOptions () const |
GetObjectOptions --TBD--. | |
void | SetObjectOptions (XMP_OptionBits options) |
SetObjectOptions --TBD--. | |
TXMPMeta | Clone (XMP_OptionBits options=0) const |
Clone creates a deep clone of the XMP object. | |
XMP_Index | CountArrayItems (XMP_StringPtr schemaNS, XMP_StringPtr arrayName) const |
CountArrayItems --TBD--. | |
void | MarkStaleProperties (XMP_OptionBits options=0) |
MarkStaleProperties --TBD--. | |
XMP_Status | DumpObject (XMP_TextOutputProc outProc, void *refCon) const |
DumpObject dumps the content of an XMP object. | |
Functions for parsing and serializing. | |
These functions support parsing serialized RDF into an XMP object, and serailizing an XMP object into RDF. The input for parsing may be any valid Unicode encoding. ISO Latin-1 is also recognized, but its use is strongly discouraged. Serialization is always as UTF-8. | |
void | ParseFromBuffer (XMP_StringPtr buffer, XMP_StringLen bufferSize, XMP_OptionBits options=0) |
ParseFromBuffer parses RDF from a series of input buffers. The buffers may be any length. The buffer boundaries need not respect XML tokens or even Unicode characters. | |
void | SerializeToBuffer (tStringObj *rdfString, XMP_OptionBits options, XMP_StringLen padding, XMP_StringPtr newline, XMP_StringPtr indent="", XMP_Index baseIndent=0) const |
SerializeToBuffer serializes an XMP object into a string as RDF. | |
void | SerializeToBuffer (tStringObj *rdfString, XMP_OptionBits options=0, XMP_StringLen padding=0) const |
This form of SerializeToBuffer is a simple overload in the template that calls the above form passing default values for the newline , indent , and baseIndent parameters. | |
Static Public Member Functions | |
void | RegisterPropertyTraits (XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_OptionBits options) |
Registers special traits for a property. | |
Initialization and termination | |
void | GetVersionInfo (XMP_VersionInfo *info) |
Obtain version information. | |
bool | Initialize (XMP_AllocateProc AllocateProc=0, XMP_DeleteProc DeleteProc=0) |
Initialize the XMP Toolkit. | |
void | Terminate () |
Terminate the XMP Toolkit. | |
Global option flags | |
The global option flags affect the overall behavior of the XMP Toolkit. The available options are declared in XMP_Const.h . (There are none at present.) | |
XMP_OptionBits | GetGlobalOptions () |
GetGlobalOptions returns the set of global option flags. | |
void | SetGlobalOptions (XMP_OptionBits options) |
SetGlobalOptions updates the set of global option flags. The entire set is replaced with the new values. If only one flag is to be modified, use GetGlobalOptions to obtain the current set, modify the desired flag, then use SetGlobalOptions . | |
Assert failure notifications | |
void | RegisterAssertNotify (XMP_AssertNotifyProc notifyProc, void *refCon) |
RegisterAssertNotify registers a callback function to provide user notification of debugging assertion failures. See the XMP_AssertNotifyProc declaration in XMP_Const.h for more information. | |
void | UnregisterAssertNotify (XMP_AssertNotifyProc notifyProc) |
UnregisterAssertNotify unregisters a notification function if it is the active one. Passing a null pointer unregisters any active notification function. | |
void | SendAssertNotify (XMP_StringPtr message) |
SendAssertNotify sends an assert notification with the given message. This is not intended as a general client utility. It is a utility for DLLs layered on top of XMP, allowing them to support assert notifications without forcing the client app to separately register the callback. | |
Internal data structure dump utilities | |
These are debugging utilities that dump internal data structures. The output callback is described in XMP_Const.h . | |
XMP_Status | DumpNamespaces (XMP_TextOutputProc outProc, void *refCon) |
DumpNamespaces dumps the list of registered namespace URIs and prefixes. | |
XMP_Status | DumpAliases (XMP_TextOutputProc outProc, void *refCon) |
DumpAliases dumps the list of registered aliases and corresponding actuals. | |
XMP_Status | DumpPropertyTraits (XMP_TextOutputProc outProc, void *refCon) |
DumpPropertyTraits dumps the list of registered property traits. | |
Namespace Functions | |
Namespaces must be registered before use in namespace URI parameters or XPath 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. | |
bool | RegisterNamespace (XMP_StringPtr namespaceURI, XMP_StringPtr suggestedPrefix, tStringObj *registeredPrefix) |
Register a namespace URI with a suggested prefix. | |
bool | GetNamespacePrefix (XMP_StringPtr namespaceURI, tStringObj *namespacePrefix) |
Obtain the prefix for a registered namespace URI. | |
bool | GetNamespaceURI (XMP_StringPtr namespacePrefix, tStringObj *namespaceURI) |
Obtain the URI for a registered namespace prefix. | |
void | DeleteNamespace (XMP_StringPtr namespaceURI) |
Delete a namespace from the registry. | |
Alias Functions | |
Aliases 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.
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. | |
void | RegisterAlias (XMP_StringPtr aliasNS, XMP_StringPtr aliasProp, XMP_StringPtr actualNS, XMP_StringPtr actualProp, XMP_OptionBits arrayForm=kXMP_NoOptions) |
Associates an alias name with an actual name. | |
bool | ResolveAlias (XMP_StringPtr aliasNS, XMP_StringPtr aliasProp, tStringObj *actualNS, tStringObj *actualProp, XMP_OptionBits *arrayForm) |
Determines if a name is an alias, and what it is aliased to. | |
void | DeleteAlias (XMP_StringPtr aliasNS, XMP_StringPtr aliasProp) |
Delete an alias. | |
void | RegisterStandardAliases (XMP_StringPtr schemaNS) |
Registers all of the built-in aliases for a standard namespace. |
TXMPMeta
is the template class providing the core services of the XMP Toolkit. It should be instantiated with a string class such as std::string. Please read the general toolkit usage notes for information about the overall architecture of the XMP API.
This template wraps a string object class around the raw XMP API. This provides two significant benefits, output strings are automatically copied and access is fully thread safe. The umbrella header, XMP.hpp
, provides an SXMPMeta
typedef for the instantiated template. String objects are only necessary for output strings. Input string are literals and passed as typical C const char *
.
The template parameter, class tStringObj
, must have the following member functions (which match those for std::string
):
tStringObj& assign ( const char * str, size_t len ) size_t size() const const char * c_str() const
Be aware that the TXMPMeta
class is a normal C++ template, it is instantiated and local to each client executable. As are the other TXMP* classes. Different clients might not even use the same string type to instantiate TXMPMeta
.
Because of this you should not pass SXMPMeta
objects, or pointers to SXMPMeta
objects, across DLL boundaries. There is a safe internal reference that you can pass, then construct a local object on the callee side. This construction does not create a cloned XMP tree, it is the same underlying XMP object safely wrapped in each client's SXMPMeta
object.
Use GetInternalRef and the associated constructor like this:
--- The callee's header contains: CalleeMethod ( XMPMetaRef xmpRef ); --- The caller's code contains: SXMPMeta callerXMP; CalleeMethod ( callerXMP.GetInternalRef() ); --- The callee's code contains: SXMPMeta calleeXMP ( xmpRef );
|
Default constructor, creates an empty object.
The default constructor creates a new empty |
|
Copy constructor, creates a client object refering to the same internal object.
The copy constructor creates a new |
|
Reconstruct an XMP object from an internal ref.
This constructor creates a new |
|
Construct an object and parse one buffer of RDF into it.
This constructor creates a new
|
|
|
|
This function creates a deep clone of the XMP object. Assignment and copy constructors do not, they just increment a reference count. Note that
SXMPMeta * clone1 = &sourceXMP.Clone(); // ! This does not work! SXMPMeta * clone2 = new SXMPMeta ( sourceXMP.Clone() ); // This works. SXMPMeta clone3 ( sourceXMP.Clone ); // This works also. (Not a pointer.)
In the code above, the assignment to
|
|
Delete an alias. This only deletes the registration of the alias, it does not delete the actual property. It does delete any view of the property through the alias name. It is OK to attempt to delete an alias that does not exist, that is if the alias name is not registered as an alias.
|
|
|
|
Delete a namespace from the registry.
Does nothing if the URI is not registered, or if the
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Obtain the prefix for a registered namespace URI.
It is not an error if the namespace URI is not registered. The output
|
|
Obtain the URI for a registered namespace prefix.
It is not an error if the namespace prefix is not registered. The output
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The names of qualifiers should be XML qualified names, that is within an XML namespace. The XPath syntax for a qualified name uses the namespace prefix. This is unreliable since the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.
|
|
The names of fields should be XML qualified names, that is within an XML namespace. The XPath syntax for a qualified name uses the namespace prefix. This is unreliable since the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.
|
|
Initialize the XMP Toolkit. The XMP Toolkit may be explicitly initialized before use. The allocate/delete parameters must be either both null (0), or both non-null. |
|
MarkStaleProperties --TBD--.
|
|
Assignment operator, assigns the internal ref and increments the ref count. The assignment operator assigns the internal ref from the rhs object and increments the reference count on the underlying internal XMP object. |
|
|
|
Associates an alias name with an actual name. Define a alias mapping from one namespace/property to another. Both property names must be simple names. An alias can be a direct mapping, where the alias and actual have the same data type. It is also possible to map a simple alias to an item in an array. This can either be to the first item in the array, or to the 'x-default' item in an alt-text array. Multiple alias names may map to the same actual, as long as the forms match. It is a no-op to reregister an alias in an identical fashion.
|
|
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.
|
|
Registers special traits for a property. A property may have a variety of special traits
|
|
Registers all of the built-in aliases for a standard namespace. The built-in aliases are documented in the XMP Specification. This registers the aliases in the given namespace, that is the aliases from this namespace to actuals in other namespaces.
|
|
Determines if a name is an alias, and what it is aliased to.
|
|
kXMP_OmitPacketWrapper along with kXMP_ReadOnlyPacket , kXMP_IncludeThumbnailPad , or kXMP_ExactPacketLength .In addition, one of the following encoding options may be included:
|
|
In normal usage the selected array item is modified. A new item is automatically appended if the index is the array size plus 1. A new item may be inserted before or after any item by using one of the following option flags:
|
|
|
|
If the selected item is from a match with the specific language, the value of that item is modified. If the existing value of that item matches the existing value of the x-default item, the x-default item is also modified. If the array only has 1 existing item (which is not x-default), an x-default item is added with the given value. If the selected item is from a match with the generic language and there are no other generic matches, the value of that item is modified. If the existing value of that item matches the existing value of the x-default item, the x-default item is also modified. If the array only has 1 existing item (which is not x-default), an x-default item is added with the given value. If the selected item is from a partial match with the generic language and there are other partial matches, a new item is created for the specific language. The x-default item is not modified. If the selected item is from the last 2 rules then a new item is created for the specific language. If the array only had an x-default item, the x-default item is also modified. If the array was empty, items are created for the specific language and x-default.
|
|
SetObjectOptions --TBD--.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The names of qualifiers should be XML qualified names, that is within an XML namespace. The XPath syntax for a qualified name uses the namespace prefix, which is unreliable because the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.
|
|
The names of fields should be XML qualified names, that is within an XML namespace. The XPath syntax for a qualified name uses the namespace prefix, which is unreliable because the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.
|