<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head profile="http://internetalchemy.org/2003/02/profile"> <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" /> <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" /> <meta name="dc.title" content="Function: XMLAddAttribute - Virtuoso Functions Guide" /> <meta name="dc.subject" content="Function: XMLAddAttribute - Virtuoso Functions Guide" /> <meta name="dc.creator" content="OpenLink Software Documentation Team ; " /> <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" /> <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" /> <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" /> <link rel="parent" href="functions.html" title="Chapter Contents" /> <link rel="prev" href="appendixa.html" title="Appendix" /> <link rel="next" href="functions.html#.html" title="" /> <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" /> <link rel="stylesheet" type="text/css" href="doc.css" /> <link rel="stylesheet" type="text/css" href="/doc/translation.css" /> <title>Function: XMLAddAttribute - Virtuoso Functions Guide</title> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> <meta name="author" content="OpenLink Software Documentation Team ; " /> <meta name="copyright" content="OpenLink Software, 1999 - 2009" /> <meta name="keywords" content="" /> <meta name="GENERATOR" content="OpenLink XSLT Team" /> </head> <body> <div id="header"> <a name="fn_XMLAddAttribute" /> <img src="../images/misc/logo.jpg" alt="" /> <h1>22. Virtuoso Functions Guide - XMLAddAttribute</h1> </div> <div id="navbartop"> <div> <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="fn_XMLATTRIBUTES.html" title="XMLATTRIBUTES">Prev</a> | <a class="link" href="fn_XMLAppendChildren.html" title="XMLAppendChildren">Next</a> </div> </div> <div id="currenttoc"> <form method="post" action="/doc/adv_search.vspx"> <div class="search">Keyword Search: <br /> <input type="text" name="q" /> <input type="submit" name="go" value="Go" /> </div> </form> <div> <a href="http://www.openlinksw.com/">www.openlinksw.com</a> </div> <div> <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a> </div> <br /> <div> <a href="index.html">Book Home</a> </div> <br /> <div> <a href="contents.html">Contents</a> </div> <div> <a href="preface.html">Preface</a> </div> <br /> <div> <a class="selected" href="functions.html">Virtuoso Functions Guide</a> </div> <br /> <div> <a href="functions.html#admin">Administration</a> </div> <div> <a href="functions.html#aggr">Aggregate Functions</a> </div> <div> <a href="functions.html#array">Array Manipulation</a> </div> <div> <a href="functions.html#bpel">BPEL APIs</a> </div> <div> <a href="functions.html#backup">Backup</a> </div> <div> <a href="functions.html#compression">Compression</a> </div> <div> <a href="functions.html#cursors">Cursor</a> </div> <div> <a href="functions.html#time">Date & Time Manipulation</a> </div> <div> <a href="functions.html#debug">Debug</a> </div> <div> <a href="functions.html#dict">Dictionary Manipulation</a> </div> <div> <a href="functions.html#encoding">Encoding & Decoding</a> </div> <div> <a href="functions.html#file">File Manipulation</a> </div> <div> <a href="functions.html#ft">Free Text</a> </div> <div> <a href="functions.html#hash">Hashing / Cryptographic</a> </div> <div> <a href="functions.html#ldap">LDAP</a> </div> <div> <a href="functions.html#localization">Locale</a> </div> <div> <a href="functions.html#mail">Mail</a> </div> <div> <a href="functions.html#misc">Miscellaneous</a> </div> <div> <a href="functions.html#number">Number</a> </div> <div> <a href="functions.html#phrz">Phrases</a> </div> <div> <a href="functions.html#rdf">RDF data</a> </div> <div> <a href="functions.html#rmt">Remote SQL Data Source</a> </div> <div> <a href="functions.html#repl">Replication</a> </div> <div> <a href="functions.html#soap">SOAP</a> </div> <div> <a href="functions.html#sql">SQL</a> </div> <div> <a href="functions.html#string">String</a> </div> <div> <a href="functions.html#txn">Transaction</a> </div> <div> <a href="functions.html#type">Type Mapping</a> </div> <div> <a href="functions.html#uddi">UDDI</a> </div> <div> <a href="functions.html#udt">User Defined Types & The CLR</a> </div> <div> <a href="functions.html#vad">VAD</a> </div> <div> <a href="functions.html#jvmpl">Virtuoso Java PL API</a> </div> <div> <a href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a> </div> <div> <a href="functions.html#ws">Web & Internet</a> </div> <div> <a class="selected" href="functions.html#xml">XML</a> </div> <div class="selected"> <div> <a href="fn_XMLAGG.html">xmlagg</a> </div> <div> <a href="fn_XMLATTRIBUTES.html">xmlattributes</a> </div> <div> <a class="selected" href="fn_XMLAddAttribute.html">xmladdattribute</a> </div> <div> <a href="fn_XMLAppendChildren.html">xmlappendchildren</a> </div> <div> <a href="fn_XMLCONCAT.html">xmlconcat</a> </div> <div> <a href="fn_XMLELEMENT.html">xmlelement</a> </div> <div> <a href="fn_XMLFOREST.html">xmlforest</a> </div> <div> <a href="fn_XMLInsertAfter.html">xmlinsertafter</a> </div> <div> <a href="fn_XMLInsertBefore.html">xmlinsertbefore</a> </div> <div> <a href="fn_XMLReplace.html">xmlreplace</a> </div> <div> <a href="fn_XMLType.XMLType.html">xmltype.xmltype</a> </div> <div> <a href="fn_XMLType.createNonSchemaBasedXML.html">xmltype.createnonsch...</a> </div> <div> <a href="fn_XMLType.createSchemaBasedXML.html">xmltype.createschema...</a> </div> <div> <a href="fn_XMLType.createXML.html">xmltype.createxml</a> </div> <div> <a href="fn_XMLType.existsNode.html">xmltype.existsnode</a> </div> <div> <a href="fn_XMLType.extract.html">xmltype.extract</a> </div> <div> <a href="fn_XMLType.getClobVal.html">xmltype.getclobval</a> </div> <div> <a href="fn_XMLType.getNamespace.html">xmltype.getnamespace</a> </div> <div> <a href="fn_XMLType.getNumVal.html">xmltype.getnumval</a> </div> <div> <a href="fn_XMLType.getRootElement.html">xmltype.getrooteleme...</a> </div> <div> <a href="fn_XMLType.getSchemaURL.html">xmltype.getschemaurl</a> </div> <div> <a href="fn_XMLType.getStringVal.html">xmltype.getstringval</a> </div> <div> <a href="fn_XMLType.isFragment.html">xmltype.isfragment</a> </div> <div> <a href="fn_XMLType.isSchemaBased.html">xmltype.isschemabase...</a> </div> <div> <a href="fn_XMLType.isSchemaValid.html">xmltype.isschemavali...</a> </div> <div> <a href="fn_XMLType.isSchemaValidated.html">xmltype.isschemavali...</a> </div> <div> <a href="fn_XMLType.schemaValidate.html">xmltype.schemavalida...</a> </div> <div> <a href="fn_XMLType.setSchemaValidated.html">xmltype.setschemaval...</a> </div> <div> <a href="fn_XMLType.toObject.html">xmltype.toobject</a> </div> <div> <a href="fn_XMLType.transform.html">xmltype.transform</a> </div> <div> <a href="fn_XMLUpdate.html">xmlupdate</a> </div> <div> <a href="fn_xper_right_sibling.html">xper navigation</a> </div> <div> <a href="fn_createXML.html">createxml</a> </div> <div> <a href="fn_isentity.html">isentity</a> </div> <div> <a href="fn_serialize_to_UTF8_xml.html">serialize_to_utf8_xm...</a> </div> <div> <a href="fn_tidy_html.html">tidy_html</a> </div> <div> <a href="fn_tidy_list_errors.html">tidy_list_errors</a> </div> <div> <a href="fn_updateXML.html">updatexml</a> </div> <div> <a href="fn_xml_add_system_path.html">xml_add_system_path</a> </div> <div> <a href="fn_xml_auto.html">xml_auto</a> </div> <div> <a href="fn_xml_auto_dtd.html">xml_auto_dtd</a> </div> <div> <a href="fn_xml_auto_schema.html">xml_auto_schema</a> </div> <div> <a href="fn_xml_create_tables_from_mapping_schema_decl.html">xml_create_tables_fr...</a> </div> <div> <a href="fn_xml_cut.html">xml_cut</a> </div> <div> <a href="fn_xml_doc_output_option.html">xml_doc_output_optio...</a> </div> <div> <a href="fn_xml_get_system_paths.html">xml_get_system_paths</a> </div> <div> <a href="fn_xml_load_mapping_schema_decl.html">xml_load_mapping_sch...</a> </div> <div> <a href="fn_xml_load_schema_decl.html">xml_load_schema_decl</a> </div> <div> <a href="fn_xml_namespace_scope.html">xml_namespace_scope</a> </div> <div> <a href="fn_xml_persistent.html">xml_persistent</a> </div> <div> <a href="fn_xml_set_ns_decl.html">xml_set_ns_decl</a> </div> <div> <a href="fn_xml_template.html">xml_template</a> </div> <div> <a href="fn_xml_tree.html">xml_tree</a> </div> <div> <a href="fn_xml_tree_doc.html">xml_tree_doc</a> </div> <div> <a href="fn_xml_tree_doc_media_type.html">xml_tree_doc_media_t...</a> </div> <div> <a href="fn_xml_uri_get.html">xml_uri_get</a> </div> <div> <a href="fn_xml_validate_dtd.html">xml_validate_dtd</a> </div> <div> <a href="fn_xml_validate_schema.html">xml_validate_schema</a> </div> <div> <a href="fn_xml_view_dtd.html">xml_view_dtd</a> </div> <div> <a href="fn_xml_view_schema.html">xml_view_schema</a> </div> <div> <a href="fn_xmlsql_update.html">xmlsql_update</a> </div> <div> <a href="fn_xpath_eval.html">xpath_eval</a> </div> <div> <a href="fn_xper_cut.html">xper_cut</a> </div> <div> <a href="fn_xper_doc.html">xper_doc</a> </div> <div> <a href="fn_xper_locate_words.html">xper_locate_words</a> </div> <div> <a href="fn_xpf_extension.html">xpf_extension</a> </div> <div> <a href="fn_xpf_extension_remove.html">xpf_extension_remove</a> </div> <div> <a href="fn_xquery_eval.html">xquery_eval</a> </div> <div> <a href="fn_xslt.html">xslt</a> </div> <div> <a href="fn_xslt_format_number.html">xslt_format_number</a> </div> <div> <a href="fn_xslt_sheet.html">xslt_sheet</a> </div> <div> <a href="fn_xslt_stale.html">xslt_stale</a> </div> <div> <a href="fn_xte_head.html">xte_head</a> </div> <div> <a href="fn_xte_node.html">xte_node</a> </div> <div> <a href="fn_xte_node_from_nodebld.html">xte_node_from_nodebl...</a> </div> <div> <a href="fn_xte_nodebld_acc.html">xte_nodebld_acc</a> </div> <div> <a href="fn_xte_nodebld_final.html">xte_nodebld_final</a> </div> <div> <a href="fn_xte_nodebld_init.html">xte_nodebld_init</a> </div> <div> <a href="fn_xtree_doc.html">xtree_doc</a> </div> </div> <div> <a href="functions.html#XPATH">XPATH & XQUERY</a> </div> <br /> <div> <a href="functionidx.html">Functions Index</a> </div> <br /> </div> <div id="text"> <h2>XMLAddAttribute</h2> <div class="refpurpose">Add an attribute to the given node of an XML tree document</div> <div class="funcsynopsis"> <span class="funcdef">integer <span class="function">XMLAddAttribute</span> </span> (<span class="paramdef">inout <span class="parameter">source</span> any</span>, <span class="paramdef">in <span class="parameter">mode</span> integer</span>, <span class="paramdef">in <span class="parameter">attr_name</span> any</span>, <span class="paramdefoptional">[in <span class="optional">attr_value</span> any]</span>); </div> <div class="refsect1"> <div class="refsect1title">Description</div> <p>The function modifies the <span class="computeroutput">source</span> document by adding an attribute to the current node of <span class="computeroutput">source</span> entity. The <span class="computeroutput">source</span> should be an XML tree entity, not "persistent XML" one, should be an element entity (not attribute, text etc.) and should not be a root entity. Parameters <span class="computeroutput">attr_name</span> and <span class="computeroutput">attr_value</span> can be of any types that can be casted to string. <span class="computeroutput">attr_name</span> can be an attribute entity, in this case both the name and the value of <span class="computeroutput">attr_name</span> attribute is used and <span class="computeroutput">attr_value</span> parameter must be omitted. </p> <p> The <span class="computeroutput">mode</span> specifies how to resolve duplicate attribute names, if an <span class="computeroutput">source</span> entity already has an attribute whose name is equal to <span class="computeroutput">attr_name</span>. Mode 0 is similar to "insert into": the function signals an error if an attribute already exists. Mode 1 is similar to "insert soft": the function do nothing if an attribute already exists and not signalling an error. Mode 2 is similar to "insert replacing": the function either adds a new attribute or replacing the value of existing attribute. </p> </div> <div class="refsect1"> <div class="refsect1title">Parameters</div> <div class="refsect2"> <span class="refsect2title">source – </span> The XML tree entity to change. </div> <div class="refsect2"> <span class="refsect2title">mode – </span> The mode of resolving duplicate attribute names. </div> <div class="refsect2"> <span class="refsect2title">attr_name – </span> The name of a new attribute (or an attribute XML entity that specifies both name and value of an attribute. </div> <div class="refsect2"> <span class="refsect2title">attr_value – </span> The value of a new attribute </div> </div> <div class="refsect1"> <div class="refsect1title">Return Types</div> <p>The function returns integer that indicate the actual operation performed. The zero value means that there was no change ("insert soft" when an attribute already exists). The value one means that a new attribute was added, the value two means that an existing attribute was replaced.</p> </div> <div class="refsect1"> <div class="refsect1title">Examples</div> <a name="ex_XMLAddAttribute" /> <div class="example"> <div class="exampletitle">Different modes of calling XMLAddAttribute</div> <p>The sample procedure contains three calls of <span class="computeroutput">XMLAddAttribute</span> with different values of <span class="computeroutput">mode</span>, for "insert into", "insert soft" and "insert replacing" behaviour. </p> <div> <pre class="screen"> create procedure XMLAddAttribute_demo () { declare DESCRIPTION varchar (33); declare XMLENTITY, ent any; result_names (DESCRIPTION, XMLENTITY); result ('EXAMPLE 1', 'Adding a new attribute'); ent := xpath_eval ('//b', xtree_doc('<a><b attrX="x" attrY="y"/></a>')); result ('The document to modify:', xpath_eval('/', ent)); result ('An element node to change:', ent); XMLAddAttribute (ent, 0, 'attrZ', 'z'); result ('The document after modification:', xpath_eval('/', ent)); result ('EXAMPLE 2', 'Failed adding of an (existing) attribute'); ent := xpath_eval ('//b', xtree_doc('<a><b attrX="x" attrY="y"/></a>')); result ('The document to modify:', xpath_eval('/', ent)); result ('An element node to change:', ent); XMLAddAttribute (ent, 1, 'attrX', 'xNEW'); result ('The document after modification:', xpath_eval('/', ent)); result ('EXAMPLE 3', 'Successful replacing of an existing attribute'); ent := xpath_eval ('//b', xtree_doc('<a><b attrX="x" attrY="y"/></a>')); result ('The document to modify:', xpath_eval('/', ent)); result ('An element node to change:', ent); XMLAddAttribute (ent, 2, 'attrX', 'xNEW'); result ('The document after modification:', xpath_eval('/', ent)); } Done. -- 00000 msec. XMLAddAttribute_demo() DESCRIPTION XMLENTITY VARCHAR VARCHAR _______________________________________________________________________________ EXAMPLE 1 Adding a new attribute The document to modify: <a><b attrX="x" attrY="y" /></a> An element node to change: <b attrX="x" attrY="y" /> The document after modification: <a><b attrX="x" attrY="y" attrZ="z" /></a> EXAMPLE 2 Failed adding of an (existing) attribute The document to modify: <a><b attrX="x" attrY="y" /></a> An element node to change: <b attrX="x" attrY="y" /> The document after modification: <a><b attrX="x" attrY="y" /></a> EXAMPLE 3 Successful replacing of an existing attribute The document to modify: <a><b attrX="x" attrY="y" /></a> An element node to change: <b attrX="x" attrY="y" /> The document after modification: <a><b attrX="xNEW" attrY="y" /></a> 12 Rows. -- 00000 msec. </pre> </div> </div> </div> <div class="refsect1"> <div class="refsect1title">See Also</div> <p> <a href="fn_XMLReplace.html">XMLReplace</a> </p> <p> <a href="fn_XMLAppendChildren.html">XMLAppendChildren</a> </p> <p> <a href="fn_XMLInsertBefore.html">XMLInsertBefore</a> </p> <p> <a href="fn_XMLInsertAfter.html">XMLInsertAfter</a> </p> </div> </div> <div id="footer"> <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div> <div id="validation"> <a href="http://validator.w3.org/check/referer"> <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /> </a> <a href="http://jigsaw.w3.org/css-validator/"> <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" /> </a> </div> </div> </body> </html>