[xquery-talk] Query the attributes
Michael Kay
mike at saxonica.com
Thu May 23 02:49:27 PDT 2013
A well-known gotcha in XQuery, sorry for not spotting it!
Michael Kay
Saxonica
On 23 May 2013, at 10:19, Mailing Lists Mail wrote:
> Just updating...
> I tried :
> {
> string($college/@id)
> }
>
> and
>
> {
> $college/@id/string()
> }
>
> Both worked!
>
> You were right John, I checked the source of HTML .. the name was
> getting on to the div element as an attribute.
>
> so it is more like copy-of select as opposed to value-of select
>
> So i tried
>
> {
> $college/name/text()
> }
>
> this copied the text node of the name.. So the <div> <name>rerr
> </name> </div> now is more <div> rerr </div> which is what i want...
>
> I guess we couldnt do the same for the attribute nodes as {$college/@id/text()}
>
>
> Thanks....
>
> On Thu, May 23, 2013 at 10:01 AM, Mailing Lists Mail
> <daktapaal at gmail.com> wrote:
>> Hi Mike/ JOhn/
>>
>> As far as my knowledge went, i did not think anything was wrong as
>> calling a child element should be the same as calling attribute for
>> practical purposes.
>> I will try to reproduce the issue with something smaller. In the
>> meantime, I shall try John's suggestion..,
>>
>> Thanks both for your replies.
>> Dak
>>
>> On Thu, May 23, 2013 at 9:53 AM, John Snelson
>> <john.snelson at marklogic.com> wrote:
>>> On 23/05/13 09:34, Mailing Lists Mail wrote:
>>>>
>>>> I was trying to query the atribute value using Xquery in MarkLogic and
>>>> no matter what, I dont seem to be printing the value...
>>>> So this is what I do...
>>>>
>>>> for $college at $position in $doc//college
>>>> return
>>>> <div>
>>>> {$college/name}
>>>> </div>
>>>> <div>
>>>> {$college/@id}
>>>> </div>
>>>
>>>
>>> In both those cases you're selecting nodes, and the nodes are being added to
>>> the result tree. I suspect the browser is displaying the name, as it is an
>>> element with text content, but the "id" attribute is added as an attribute,
>>> which browsers don't display.
>>>
>>> In both cases what you really want is probably the string value of those
>>> nodes, which you can get be calling the string() function on them.
>>>
>>> John
>>>
>>> --
>>> John Snelson, Lead Engineer http://twitter.com/jpcs
>>> MarkLogic Corporation http://www.marklogic.com
>>> _______________________________________________
>>> talk at x-query.com
>>> http://x-query.com/mailman/listinfo/talk
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk
More information about the talk
mailing list