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

Reply via email to