Hi,
I am newbie to Basex. I am trying to connect to BaseXJAXRX server from python and trying to add a document along with its xml declaration to a collection. The XML declaration is not getting stored. Here is the code snippet:
----
xml = '<?xml version="1.0" encoding="UTF-8" ?><Message><Product><Reference>2233</Reference><Product></Message>'
session = BaseXClient.Session(settings.BASEX_SERVER_IP, settings.BASEX_SERVER_PORT, settings.BASEX_SERVER_USER,settings.BASEX_SERVER_USER) session.execute('SET DBPATH '+ settings.XMLDB_FOLDER) session.execute('OPEN ' + settings.XMLDB_NAME) session.add("2233.xml", "", etree.tostring(xml, encoding="utf-8", xml_declaration=True))
input = "declare option output:omit-xml-declaration 'no'; collection('" + settings.XMLDB_NAME + "')//Message[//Reference='2233']"
query = session.query(input)
query.init()
while query.more(): product = query.next() print product
session.close()
----
'print product' results in the following:
<Message><Product><Reference>2233</Reference><Product></Message>
How do I ensure that the XML declaration is also stored? Is omit-xml-declaration the answer? How do I set it while running "add" on BasexClient.Session?
Thanks Murthy Raju
Dear Murthy,
thanks for your mail and the not-so-obvious problem. In BaseX (and other native XML databases), the XML declaration is not stored in the database, as all data is internally represented in the same encoding and XML version. To read the declaration when outputting (“serializing”) the document, you need to specify the omit-xml-declaration flag, which you've already noticed. Please find some more information on serialization parameters at:
http://docs.basex.org/wiki/Serialization
Feel free to ask for more, Christian ___________________________
On Mon, Sep 12, 2011 at 2:58 AM, Murthy Raju murthyraju@gmail.com wrote:
Hi,
I am newbie to Basex. I am trying to connect to BaseXJAXRX server from python and trying to add a document along with its xml declaration to a collection. The XML declaration is not getting stored. Here is the code snippet:
xml = '<?xml version="1.0" encoding="UTF-8" ?><Message><Product><Reference>2233</Reference><Product></Message>'
session = BaseXClient.Session(settings.BASEX_SERVER_IP, settings.BASEX_SERVER_PORT, settings.BASEX_SERVER_USER,settings.BASEX_SERVER_USER) session.execute('SET DBPATH '+ settings.XMLDB_FOLDER) session.execute('OPEN ' + settings.XMLDB_NAME) session.add("2233.xml", "", etree.tostring(xml, encoding="utf-8", xml_declaration=True))
input = "declare option output:omit-xml-declaration 'no'; collection('" + settings.XMLDB_NAME + "')//Message[//Reference='2233']"
query = session.query(input)
query.init()
while query.more(): product = query.next() print product
session.close()
'print product' results in the following:
<Message><Product><Reference>2233</Reference><Product></Message>
How do I ensure that the XML declaration is also stored? Is omit-xml-declaration the answer? How do I set it while running "add" on BasexClient.Session?
Thanks Murthy Raju _______________________________________________ BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
basex-talk@mailman.uni-konstanz.de