Ok, I see the problem, unfortunately I still can't replicate the issue with our current repository version. I started with a document like this:
*<a> <b/> </a>* and used the following insert statements: *insert node <c xmlns='newns'/> into /a* and afterwards ... *insert node <d/> into /a* * * * * Still, there's no namespace linked to <d/>. Can you replicate the issue with this example or change it in a way that it replicates it? Regards, Lukas On Mon, Apr 2, 2012 at 5:10 PM, Mike Hawkes <mikehaw...@me.com> wrote: > Yep - this definitely causes problems. Insert a node that includes a > namespace and all subsequent nodes end up with a namespace inserted. So ... > I think this presents a bug: > > <root> > <nodes without namespace/> > <new nodes work well/> > </root> > > vs. > > <root> > <nodes without namespace/> > <node with namespace/> > <new nodes automatically get spurious namespace/> > </root> > > > Hope that helps - not sure how best to fix or work around this at the > moment though. > > Cheers > Mike > > On 2 Apr 2012, at 15:23, Mike Hawkes wrote: > > Hi Lukas/Christian > > It's the built-in one as far as I'm aware - I haven't done anything > special to add or remove any parsers. But that's sent me down a path where > I can get it reliably. > > It appears that it's coming from another query that I run to check the > state of a web-site. As soon as I run the following query, BaseX inserts > the namespace for every inserted node thereafter: > > insert node > <webpage url="http://internet.org.uk" name="primaryDomain">{ > http:send-request( > <http:request > method='get' > status-only='false'/>, > "http://internet.org.uk" )} > </webpage> > into doc($DB)/root/webpages > > As soon as I have any node after the above query has run, BaseX inserts > the namespace. Otherwise it doesn't. If I delete all the nodes within the > <webpage> tags, things return to normal again. > > Is there an easy way to do the above without adding any namesakes (I don't > actually want to include them from the web query either)? This should solve > the problem. > > Cheers > Mike > > On 2 Apr 2012, at 15:02, Lukas Kircher wrote: > > Hi Mike, > > Leo just came up with another idea: Which kind of parser are > you using in BaseX? > > If you use the HTML parser for parsing XML, the strange behaviour > you came across might indeed be expected ... If you're not sure > which parser you are using, just take a look at our documentation [1]. > > Regards, > Lukas > > [1] http://docs.basex.org/wiki/Parser#XML_Parsers > > > > On Mon, Apr 2, 2012 at 3:58 PM, Mike Hawkes <mikehaw...@me.com> wrote: > >> It's mad - I don't add a namespace, the source document is a text file >> without a namespace - and the log shows that I don't add it ... but it >> appears. No idea why. >> >> MIke >> >> On 2 Apr 2012, at 14:52, Christian Grün wrote: >> >> > So it seems that the once added namespace is propagated to other >> > documents? I believe there must be at least one document with the >> > mentioned namespace in your database; otherwise I can't explain where >> > it should come from (afaik, the string "http://www.w3.org/1999/xhtml" >> > isn't hard-coded anywhere in the project)... >> > >> > Christian >> > ___________________________________ >> > >> > On Mon, Apr 2, 2012 at 3:40 PM, Mike Hawkes <mikehaw...@me.com> wrote: >> >> The database contains >> >> >> >> <root> >> >> <auditlog> >> >> >> >> ... elements should end up in here ... >> >> >> >> </auditlog> >> >> </root> >> >> >> >> >> >> The initial XML file contains the initial nodes with which to populate >> the XML database (root plus numerous other nodes). The PHP code inserts >> additional nodes as it runs. For every node I add, I create an audit entry >> to allow me to determine who and how the database built over time. >> >> >> >> initialdb.xml contains, therefore: >> >> <root> >> >> <auditlog/> >> >> </root> >> >> >> >> You're right - ignore 'test' - I meant WYP in the database - as in >> >> >> >> drop database WYP >> >> create database WYP test/initialdb.xml >> >> >> >> Apologies for any confusion caused. >> >> >> >> It's really weird - I can't get this to fail consistently - but when >> it starts inserting the namespace attribute, it then continues to do so. >> >> >> >> Cheers >> >> Mike >> >> >> >> On 2 Apr 2012, at 14:30, Christian Grün wrote: >> >> >> >>> Sorry, I still got some questions.. >> >>> >> >>>> drop database test >> >>>> create database test /initialdb.xml >> >>> >> >>> The database you're creating seems to be called "test"; what's >> "initialdb.xml"? >> >>> >> >>>> 14:00:00.710 [127.0.0.1:49788] QUERY(4) declare >> variable $DB external; insert node <audit >> QID='80C18E9A-46DD-4B3E-89E9-967DAFD79A0B' UID='i1' >> guid='0EEDDB47-726E-49F8-B1EF-0F73ED848969' >> sessionID='48090b7f0e3a62a42a0457a3e88301ca' mode='active' >> date='2012-04-02T13:00:00+00:00'/> into doc($DB)/root/auditlog OK >> 0.09 ms >> >>>> 14:00:00.710 [127.0.0.1:49788] QUERY(4) OK >> 0.05 ms >> >>>> 14:00:00.710 [127.0.0.1:49788] BIND(4) DB WYP >> OK 0.05 ms >> >>> >> >>> The log info implies you're having "root" and "auditlog" nodes, and >> >>> the addressed database is called "WYP", is that right? Could you pass >> >>> us on the missing snippets? >> >>> >> >>> Christian >> >>> >> >>> >> >>> >> >>>> On 2 Apr 2012, at 14:11, Christian Grün wrote: >> >>>> >> >>>>> Hi Mike, >> >>>>> >> >>>>> thanks for your report. It would be great if you could provide us >> with >> >>>>> a small example that allows us to reproduce the issue (an export of >> >>>>> your original database with the namespace (which is being added to >> the >> >>>>> new node) may suffice). >> >>>>> >> >>>>> Best, >> >>>>> Christian >> >>>>> ____________________________ >> >>>>> >> >>>>> On Mon, Apr 2, 2012 at 2:44 PM, Mike Hawkes <mikehaw...@me.com> >> wrote: >> >>>>>> Hi >> >>>>>> >> >>>>>> I have a weird problem ... I'm running a query via the PHP >> interface and run the following query: >> >>>>>> >> >>>>>> declare variable $DB external; >> >>>>>> >> >>>>>> insert node >> >>>>>> <audit QID='C54B14ED-C748-4DF0-87F2-91F505BE207B' >> >>>>>> UID='i1' >> >>>>>> guid='CC9D4D2B-B380-494B-B0F6-4D72471557B0' >> >>>>>> sessionID='48090b7f0e3a62a42a0457a3e88301ca' >> >>>>>> mode='active' >> >>>>>> date='2012-04-02T12:21:05+00:00'/> >> >>>>>> into doc($DB)/root/auditlog >> >>>>>> >> >>>>>> -- >> >>>>>> BaseX log shows that it gets the query as-is. >> >>>>>> >> >>>>>> When I look at the data within the database by running the XQuery >> >>>>>> >> >>>>>> /root/auditlog >> >>>>>> >> >>>>>> I find that BaseX has inserted a namespace attribute as follows: >> >>>>>> >> >>>>>> <audit xmlns="http://www.w3.org/1999/xhtml" >> >>>>>> QID="C54B14ED-C748-4DF0-87F2-91F505BE207B" >> >>>>>> UID="i1" guid="CC9D4D2B-B380-494B-B0F6-4D72471557B0" >> sessionID="48090b7f0e3a62a42a0457a3e88301ca" mode="active" >> date="2012-04-02T12:21:05+00:00"/> >> >>>>>> >> >>>>>> How do I stop this occurring? It only does it on the audit >> components, not on anything else inserted by the PHP script. So, if I run >> two insert node queries, the first will run normally, the audit update >> causes the xmlns attribute to appear, effectively putting it in a different >> namespace to the other data inserted by the PHP. >> >>>>>> >> >>>>>> The PHP script is as follows: >> >>>>>> >> >>>>>> $audit = "declare variable \$DB external; " . >> >>>>>> "insert node <audit QID='$queryID' UID='$userID' " . >> >>>>>> "guid='$guid' sessionID='" . session_id() . "' " . >> >>>>>> "mode='active' " . >> >>>>>> "date='$dateTime'/> into doc(\$DB)/root/auditlog"; >> >>>>>> >> >>>>>> $query = $session->query( $audit ); >> >>>>>> $query->bind( 'DB', $DB); >> >>>>>> $query->bind( 'SYSDATA', $SYSDATA ); >> >>>>>> $query->execute(); >> >>>>>> $query->close(); >> >>>>>> >> >>>>>> >> >>>>>> Thanks in advance for any suggestions. >> >>>>>> >> >>>>>> Mike >> >>>>>> _______________________________________________ >> >>>>>> BaseX-Talk mailing list >> >>>>>> BaseX-Talk@mailman.uni-konstanz.de >> >>>>>> https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk >> >>>> >> >> >> >> _______________________________________________ >> BaseX-Talk mailing list >> BaseX-Talk@mailman.uni-konstanz.de >> https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk >> > > > _______________________________________________ > BaseX-Talk mailing list > BaseX-Talk@mailman.uni-konstanz.de > https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk > > >
_______________________________________________ BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk