Re: XPath Search
Brought to you by:
bs_php,
nigelswinson
|
From: Tod M. <tod...@gm...> - 2006-02-06 18:45:42
|
I've narrowed the problem down. When I search through keywords in the xml
file (each component has one keyword tag with multiple words) it works fine
using:
$components=3D$xPath->match("//component[contains(keyword,'string')]");
but when I search through features (each component has multiple features)
using:
$components=3D$xPath->match("//component[contains(feature,'string')]");
I get an empty array.
Do I have to do something different if there are multiple tags such as
feature?
On 2/6/06, Tod McIntyre <tod...@gm...> wrote:
>
> Can someone help me out? I can't seem to get the match working...
>
> I'm using:
> $components=3D$xPath->match("//component[contains(feature,'string')]");
> which returns nothing in the array, even though "string" is in the file
>
> when I use : $components=3D$xPath->match("//*[contains(.,'string')]");
> however, it works.
>
> This isn't exactly ideal though as I just want to return the component
> node itself that contains the "string" within the feature, not the actual
> feature.
>
> Nigel, your solution of
> $components=3D$xPath->match("//*[contains(feature,'string')]"); doesn't w=
ork
> either. It seems whenever I put the actual node name in the contains
> function it doesn't work.
>
> Brad
>
> On 1/28/06, Nigel Swinson <nig...@us...> wrote:
> >
> > Try stuff like this:
> >
> > // Find all nodes that have a feature element that contains the word
> > cabinet, case insensitively
> > $aMatches =3D
> > $Object->match("//*[contains(x-tolower(feature),'cabinet')]");
> > // Cycle through the nodes we find
> > foreach ($aMatches as $Match) {
> > // $Match will be something like /Product[1]/Component[3]
> > echo $Object->getAttributes($Match.'/image', 'src');
> > echo $Object->wholeText($Match.'/title');
> > }
> >
> > Sorry it took so long to respond, I was hoping someone else on the list
> > would beat me to it.
> >
> > Nigel
> >
> > ----- Original Message -----
> > *From:* Tod McIntyre <tod...@gm...>
> > *To:* php...@li...
> > *Sent:* Saturday, January 14, 2006 7:55 PM
> > *Subject:* XPath Search
> >
> > I just found this class and it seems to offer exactly what I want. I'm
> > new to it & xpath though so I'm slowly learning how to do things. I wa=
nt to
> > perform a search on my XML database for a string entered by a user. Sa=
y for
> > instance "cabinet". From this I want to search several XML files of th=
e
> > following structure:
> >
> > <?xml version=3D"1.0"?>
> > <!DOCTYPE product PUBLIC "-//RYE//DTD IMAGEDB 1.0 Strict//EN" "
> > component.dtd">
> > <product>
> > <component id=3D"wall_cab">
> > <title>Wall Cabinet</title>
> > <image src=3D"/images/cabinetry/wall_cab.jpg" />
> > <link href=3D"/products/cabinetry/wall.html" />
> > <feature>Sturdy double wall door </feature>
> > <feature>Door has perforated inside wall for hanging hooks for tools
> > etc</feature>
> > <feature>Solid steel construction 20-Gauge (.036") thick </feature>
> > <feature>One shelf included 24" x 10" x 0.6" </feature>
> > <keywords>tools sports sporting </keywords>
> > </component>
> > <component id=3D"component2">
> > ...
> > </component>
> > </product>
> >
> > I have added keywords to enhance the search functionality. What I want
> > to do is extract the title, image, and link of any product that contain=
s, in
> > any tag, the string entered by the user.
> >
> > I'm not exactly sure how to do this.
> >
> > Can someone point me in the right direction? I know it's asking a lot,
> > but even a quick pointer would help me out. I'm not a very experienced=
php
> > programmer
> > .
> > Thanks very much,
> >
> > Brad
> >
> >
>
|