简体   繁体   中英

How to generate namespaces in XML docs with Db2?

I want to generate the following xml doc in db2 and it has several namespaces:

<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" 
xmlns:ComIbmCompute.msgnode="ComIbmCompute.msgnode" 
xmlns:ComIbmDatabase.msgnode="ComIbmDatabase.msgnode" 
xmlns:ComIbmWSInput.msgnode="ComIbmWSInput.msgnode" 
xmlns:ComIbmWSReply.msgnode="ComIbmWSReply.msgnode" 
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
xmlns:eflow="http://www.ibm.com/wbi/2005/eflow" 
xmlns:utility="http://www.ibm.com/wbi/2005/eflow_utility" 
nsURI="myflow/FIPRRCV.msgflow" nsPrefix="myflow_FIPRRCV.msgflow">

This does not work:

`SELECT XMLELEMENT(NAME "ecore:EPackage", 
XMLNAMESPACES('eclipse.org/emf/2002/Ecore'; AS "ecore")) as "result"
 FROM SYSIBM.SYSDUMMY1 WITH UR;` 

How can I define multiple namespaces and use them in elements and attributes?

The function to use is called XMLNAMESPACES . The name suggests it is not a single, but multiple namespaceS are possible. :)

You can provide several namespace declarations in a comma-separated list. Only one namespace can be set as default namespace. Try something like this:

SELECT XMLELEMENT(NAME "ecore:EPackage",
         XMLNAMESPACES('eclipse.org/emf/2002/Ecore' AS "ecore", 
        'example.com/foobar' as "foobar")) as "result"
FROM SYSIBM.SYSDUMMY1

If you need to add attributes with a prefix in their name, then just pass that combined string as attribute name to XMLATTRIBUTES . The xmi:version="2.0" in your example is "xmi:version" as name with a value of 2.0 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM