Fwd: [xquery-talk] querying attribute?
Thomas R. Jones
thomas.jones at maitreyasecurity.com
Wed Mar 18 17:06:24 PST 2009
The following message was mistakingly only sent to ken. I'm forwarding
it to the list at his request so that other users may benefit from his
insight. :)
Thomas
Sent from my iPhone
Begin forwarded message:
> From: "Thomas R. Jones" <thomas.jones at maitreyasecurity.com>
> Date: March 18, 2009 2:42:49 PM CDT
> To: "G. Ken Holman" <gkholman at cranesoftwrights.com>
> Subject: Re: [xquery-talk] querying attribute?
>
> Thanks so much for your response ken.
>
> So it is correct to declare and reference namespace prefixes within
> xquery even though they are not "explicitly" done so in source code?
> I'm guessing the parser is handling this natively. The XML source is
> located within an international database and it strips prefix
> declarations within the import triggers. :(
>
> I'll try this as soon as I get home. Thanks again
>
> Sent from my iPhone
>
> On Mar 18, 2009, at 2:05 PM, "G. Ken Holman" <gkholman at cranesoftwrights.com
> > wrote:
>
>> At 2009-03-18 13:06 -0400, Thomas R. Jones wrote:
>>> Hello all, I have the following code:
>>>
>>> <tests xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5">
>>> <rpminfo_test
>>> xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux"
>>> check="all" comment="apache2 is installed"
>>> id="oval:com.maitreyasecurity:tst:674" version="1">
>>> <object object_ref="oval:com.maitreyasecurity:obj:674"/>
>>> <state state_ref="oval:com.maitreyasecurity:ste:500"/>
>>> </rpminfo_test>
>>> </tests>
>>>
>>> I am trying everything i can think of to return the attribute
>>> value but
>>> am hanging up on the namespace(i think). I believe because the
>>> attribute
>>> is not prefixed that it is located within a NULL namespace and not
>>> the
>>> element default namespace declared----correct?
>>
>> Yes, that is correct. *All* unprefixed attributes are in no
>> namespace, never the default namespace.
>>
>>
>>> Here is my xquery:
>>>
>>> declare default element namespace
>>> "http://oval.mitre.org/XMLSchema/oval-definitions-5#linux"; for
>>> $attr in
>>> document(
>>> "apache2.package.novell.maitreyasecurity.en_US.xml","inventory.a")/
>>> tests/rpminfo_test/@id return string($attr)
>>>
>>> Ideas?
>>
>> You declare the "#linux" namespace as your default element
>> namespace, so it is being applied to *every* element (after all, it
>> is the default) which includes the <tests> element. Your <tests>
>> element is in not in the "#linux" namespace, so your problem is it
>> isn't finding the element with the attribute, not that it isn't
>> finding the attribute.
>>
>> I tell my students that using the default namespace can be awkward
>> when dealing with an instance of numerous namespaces (as I learned
>> the hard way when working with UBL). I believe it will make
>> maintenance easier if you explicitly use prefixes when there is
>> more than one namespace in your source tree.
>>
>> A running example is below ... I hope this helps.
>>
>> . . . . . . . . . Ken
>>
>> t:\ftemp>type thomas.xml
>> <tests xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5">
>> <rpminfo_test
>> xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux"
>> check="all" comment="apache2 is installed"
>> id="oval:com.maitreyasecurity:tst:674" version="1">
>> <object object_ref="oval:com.maitreyasecurity:obj:674"/>
>> <state state_ref="oval:com.maitreyasecurity:ste:500"/>
>> </rpminfo_test>
>> </tests>
>>
>> t:\ftemp>call xquery thomas.xml thomas.xq
>> <?xml version="1.0" encoding="UTF-8"?>oval:com.maitreyasecurity:tst:
>> 674
>> t:\ftemp>type thomas.xq
>> declare namespace o =
>> "http://oval.mitre.org/XMLSchema/oval-definitions-5";
>> declare namespace l =
>> "http://oval.mitre.org/XMLSchema/oval-definitions-5#linux";
>> for $attr in
>> /o:tests/l:rpminfo_test/@id return string($attr)
>>
>> t:\ftemp>
>>
>>
>> --
>> XQuery/XSLT/XSL-FO training in Los Angeles (New dates!) 2009-06-08
>> Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
>> Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
>> Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
>> G. Ken Holman mailto:gkholman at CraneSoftwrights.com
>> Crane Softwrights Ltd. http://www.CraneSoftwrights.com/q/
>> Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/q/bc
>> Legal business disclaimers: http://www.CraneSoftwrights.com/legal
>>
>> _______________________________________________
>> talk at x-query.com
>> http://x-query.com/mailman/listinfo/talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20090318/36494859/attachment.htm
More information about the talk
mailing list