|
| Søge kode Fra : Benny Hansen |
Dato : 23-12-08 22:08 |
|
Hej NG..
Er der nogen der kender en søge kode så man kan søge på sine egne
sider? Jeg ved godt at der både er google og freefind, men kan
man ikke via Paging søge i f.eks. <div class="hje"> eller evt.
bare i alle sider?
MVH Benny Hansen
Ps. Glædelig jul
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Rune Jensen (25-12-2008)
| Kommentar Fra : Rune Jensen |
Dato : 25-12-08 23:11 |
|
Benny Hansen skrev:
> Hej NG..
> Er der nogen der kender en søge kode så man kan søge på sine egne
> sider? Jeg ved godt at der både er google og freefind, men kan
> man ikke via Paging søge i f.eks. <div class="hje"> eller evt.
> bare i alle sider?
Den med alle sider kan jeg ikke hjælpe med, det er en problemstilling
for sig.
Jeg er heller ikke sikker på, hvad du mener med paging.
Men når det kommer til søgning indenfor samme side, så er jeg selv i
gang med sådan en lille sag, hvor søgeord fra Google er opmarkeret med
hver sin farve i f.eks. <p>. Det kunne godt ligne dit problem, for reelt
er man jo bare interesserede i, om bestemte ord optræder, ikke hvorfra
de kommer.
I den forb. kunne det være interessant at vide, om man kan lave en "hent
side" med serverside XMLHTTPRequest (den del kan jeg godt finde ud af)
http://www.mail-archive.com/news4guysfromrolla@ls.asplists.com/msg00002.html
....og så med serverside JavaScripting (JScript?) finde de elementer,
hvor ordet/ordene kan optræde. Så kan man jo lave en replace af ordet,
så der tilføjes en class, som via CSS er tildelt en bestemt farve.
Det er serverside javascripting, jeg er lidt lost i - har aldrig rørt
det før. Er der slet ingen getElementByID eller getElementsByTagName?
....Idéen ligger som (pseudo)eksempel her, men selvfølgelig uden kode,
ellers havde det også været for nemt (man skal bare følge første
resultat - det er farverne på søgeordene, som er interessante, ikke
selve artiklen):
http://www.google.dk/search?hl=da&q=webmasterworld+search+item&btnG=Google-s%C3%B8gning&meta=&aq=f&oq=
Med lidt snilde burde det (hvis man kan få ovenstående til at virke)
kunne besvare en del af dit spørgsmål, sålænge, det er samme side, det
drejer sig om. Altså hent siden serverside, check med JScript for, om
ordet findes i en <p> f.eks., og hvis ikke, så er det et negativt
søgeresultat.
Det burde måske også kunne laves med clientside, således, at man kan slå
farverne til og fra for hvert ord (men serverside er nok bedst til dit
spørgsmål?).
MVH
Rune Jensen
| |
Stig Johansen (26-12-2008)
| Kommentar Fra : Stig Johansen |
Dato : 26-12-08 06:29 |
|
Rune Jensen wrote:
> Er der slet ingen getElementByID eller getElementsByTagName?
Disse metoder hører til (xml)DOM objektet.
Hvilket sprog man bruger er ligegyldigt.
Hvis man vil bruge MSXML _skal_ det være wellformed xml, eller fejler den.
Alternativt skal man på jagt efter en http DOM komponent - hvis de findes.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (26-12-2008)
| Kommentar Fra : Rune Jensen |
Dato : 26-12-08 06:58 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Er der slet ingen getElementByID eller getElementsByTagName?
> Disse metoder hører til (xml)DOM objektet.
Altså clientside...?
> Hvilket sprog man bruger er ligegyldigt.
Det er næsten ved at gå op for mig, sad og kiggede lidt på JScript, og
det er da samme funktioner som VBscript, syntaksen er bare forskellig
> Hvis man vil bruge MSXML _skal_ det være wellformed xml, eller fejler den.
Altså XML, ikke XHTML? Kan det svare sig at gå i gang med, eller skal
man så lave en søg og find for hvert ord med f.eks. mid og instr i
stedet - eller hvordan?
> Alternativt skal man på jagt efter en http DOM komponent - hvis de
findes.
Lyder som noget tredje parts og noget, som koster, så er det nok ikke så
interessant;)
MVH
Rune Jensen
| |
Stig Johansen (26-12-2008)
| Kommentar Fra : Stig Johansen |
Dato : 26-12-08 08:17 |
|
Rune Jensen wrote:
> Stig Johansen skrev:
>> Rune Jensen wrote:
>>
>>> Er der slet ingen getElementByID eller getElementsByTagName?
>> Disse metoder hører til (xml)DOM objektet.
>
> Altså clientside...?
Både og.
Et serverside DOM i asp kan laves sådan her:
.....
Set objXML = Server.CreateObject("msxml2.domdocument.4.0")
objXML.Schemas = objSchema
objXML.LoadXML (objXMLH.responseText)
.....
Fra et eksempel med xml validering fra tidligere tråd:
< http://w-o-p-r.dk/tips/asp/validate.xml.asp.txt>
Her er der brugt XMLHTTPRequest til at hente med, men man kan også loade
direkte ind i dom dokumentet.
> Det er næsten ved at gå op for mig, sad og kiggede lidt på JScript, og
> det er da samme funktioner som VBscript, syntaksen er bare forskellig
Metodenavne er såkaldte late binding, og bliver skabt af objektet.
Navnene på metoderne er de samme uanset sprog.
> Altså XML, ikke XHTML?
XHTML bør være wellformed xml.
Humlen med at lave XHTML er at man (også) kan benytte det som xml rundt
omkring.
> Lyder som noget tredje parts og noget, som koster, så er det nok ikke så
> interessant;)
'Før i tiden' tror jeg nok jeg er stødt på noget af den slags.
Men dem der har brug for den slags (=DOM) er nok forlængst overgået til
XHTML, og dermed have adgang til et utal af parsere/værktøjer.
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (26-12-2008)
| Kommentar Fra : Stig Johansen |
Dato : 26-12-08 08:24 |
|
Stig Johansen wrote:
> XHTML bør være wellformed xml.
Glem lige jeg skrev det der.
Der er jo (måske) ikke nogen xml prolog, og der er mere end een rootnode.
Men hvis man erstatter doctyqpe erklæringen med en xml prolog, og indkapsler
resten i en 'dummynode', burde det bære lige ud ad landevejen.
Alternativt kunne man måske rive indholdet af <body></body> ud af xhtml'et
og parse det ind sammen med en xml prolog.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (26-12-2008)
| Kommentar Fra : Rune Jensen |
Dato : 26-12-08 10:05 |
|
Stig Johansen skrev:
> Stig Johansen wrote:
>
>> XHTML bør være wellformed xml.
>
> Glem lige jeg skrev det der.
> Der er jo (måske) ikke nogen xml prolog, og der er mere end een rootnode.
Lige kort - hvad er en root node?
> Men hvis man erstatter doctyqpe erklæringen med en xml prolog, og indkapsler
> resten i en 'dummynode', burde det bære lige ud ad landevejen.
Denne er jeg ikke helt med på, men...
> Alternativt kunne man måske rive indholdet af <body></body> ud af xhtml'et
> og parse det ind sammen med en xml prolog.
Denne forstår jeg, tror jeg.
1. Hent siden med XMLHTTPRequest.
2. Hent indhold fra <body> til </body>
3. Læg prologen + indholdet fra før sammen
4. Det sneaky... At finde hver enkelt tag i XMLen. Hvordan gøres det
lige? Ikke en færdig løsning, jeg så er ude efter, kun hints, som kan
lede i den rigtige retning. Kan man så bruge
Server.CreateObject("msxml2.domdocument.4.0") til det? Desværre synes
jeg ikke MS er særlig hjælpsom hvad angår sådan noget.
5. Så skal prologen igen erstattes med doc typen
6. siden udskrives
....er det sådan?
MVH
Rune Jensen
| |
Stig Johansen (27-12-2008)
| Kommentar Fra : Stig Johansen |
Dato : 27-12-08 08:19 |
|
Rune Jensen wrote:
> Stig Johansen skrev:
>> Der er jo (måske) ikke nogen xml prolog, og der er mere end een rootnode.
>
> Lige kort - hvad er en root node?
Alle tags bliver til nodes i en xmldom.
Wellformed xml må, og skal, kun have een node på 1. niveau, som i 'mine
kredse' kaldes root node.
Dvs dette er ikke wellformed xml:
<script>
... noget
</script>
<body>
... noget
</body>
Både <script> og <body> ligger på 'root' niveauet.
>
>> Men hvis man erstatter doctyqpe erklæringen med en xml prolog, og
>> indkapsler resten i en 'dummynode', burde det bære lige ud ad landevejen.
>
> Denne er jeg ikke helt med på, men...
Hvis man tager ovennævnte og laver om til:
<dummynode>
<script>
... noget
</script>
<body>
... noget
</body>
</dummynode>
Så er <dummynode> root node - eller root element.
>> Alternativt kunne man måske rive indholdet af <body></body> ud af
>> xhtml'et og parse det ind sammen med en xml prolog.
>
> Denne forstår jeg, tror jeg.
>
> 1. Hent siden med XMLHTTPRequest.
> 2. Hent indhold fra <body> til </body>
> 3. Læg prologen + indholdet fra før sammen
Præcis.
<body>
...noget
</body>
bør være wellformed xml, hvis der er validt xhtml.
Jeg synes lige jeg vil bemærke forskellen på wellformed og validt x(ht)ml.
Wellformed betyder kun at det skal overholde de helt basale regler, såsom
afslutning af tags, kun en document root som anført m.m.
Når vi snakker validt xml, så holder man det op mod et xmlschema, der
beskriver reglerne for indholdet.
> 4. Det sneaky... At finde hver enkelt tag i XMLen. Hvordan gøres det
> lige?
> Ikke en færdig løsning, jeg så er ude efter, kun hints, som kan
> lede i den rigtige retning. Kan man så bruge
> Server.CreateObject("msxml2.domdocument.4.0") til det?
Lidt afhænqgig af hvad du mener med 'hver enkelt tag' så kan du via en
rekursiv procedure/funktion 'dykke ned' i childnodes.
Det vil give samtlige nodes (tags) i en træstruktur.
Hvis du vil have alle <p> tags, så kan du bruge getElementByTagName.
Det vil returnere en collection af alle <p> tags.
Er det kun en enkelt node med et givet id, er det getElementById
En mere generisk måde at søge på er f.eks. XPath, hvor man bruger
selectNodes
> Desværre synes
> jeg ikke MS er særlig hjælpsom hvad angår sådan noget.
Her kan jeg ikke byde ind med links.
> 5. Så skal prologen igen erstattes med doc typen
> 6. siden udskrives
>
> ...er det sådan?
Jeg er ikke sikker på hvad du mener med 'siden udskrives'.
Hvis det er en søgefunktion kunne jeg forestille mig, at 'siden' består af
et hoveddokument hvor fragmenterne (søgeresultaterne) udskrives i et loop.
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (27-12-2008)
| Kommentar Fra : Rune Jensen |
Dato : 27-12-08 11:02 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
<SNIP>
> Dvs dette er ikke wellformed xml:
> <script>
> .. noget
> </script>
> <body>
> .. noget
> </body>
> Både <script> og <body> ligger på 'root' niveauet.
Forstået
> Hvis man tager ovennævnte og laver om til:
<SNIP>
> Så er <dummynode> root node - eller root element.
Forstået. Jeg havde heller ikke regnet sådan noget som <script>ing ind
i, men meget rart at vide til en anden gang.
<SNIP Wellformed x(ht)ML>
Forstået - så lærte jeg måske lidt allerede dér.
>> 4. Det sneaky... At finde hver enkelt tag i XMLen. Hvordan gøres det
>> lige?
>> Ikke en færdig løsning, jeg så er ude efter, kun hints, som kan
>> lede i den rigtige retning. Kan man så bruge
>> Server.CreateObject("msxml2.domdocument.4.0") til det?
>
> Lidt afhænqgig af hvad du mener med 'hver enkelt tag' så kan du via en
> rekursiv procedure/funktion 'dykke ned' i childnodes.
> Det vil give samtlige nodes (tags) i en træstruktur.
>
> Hvis du vil have alle <p> tags, så kan du bruge getElementByTagName.
> Det vil returnere en collection af alle <p> tags.
>
> Er det kun en enkelt node med et givet id, er det getElementById
>
> En mere generisk måde at søge på er f.eks. XPath, hvor man bruger
> selectNodes
OK, men før jeg kommer så langt... Jeg har jo så prologen samt <body>
til </body> i en variabel, altså jeg har allerede hentet dokumentet én
gang, vel ingen grund til at fifle mere den vej så.
Men så opstår lige et nyt problem:
Er det muligt at smække den ind i det object (domdocument) i stedet for
at hente (x)HTML-dokumentet igen fra disken? Hvis jeg skal hente
dokumentet igen, så sidder jeg jo med samme problemstilling, som før -
at der ikke er prolog, og at der er to rootnodes?
XPath ligner mere eller mindre rent terperi (igen-igen), så der kan jeg
ligesom ikke rigtigt komme videre, før noget af det andet fungerer
(eller er forstået).
Men jeg fandt denne:
http://www.w3schools.com/XPath/xpath_examples.asp
Og umiddelbart, så ser deres eksempel forståeligt ud - men igen så er
der det med, at jeg har altså dokumentet - som jeg vil præsentere det
for objektet - i en variabel, og derfor vil jeg ikke få noget ud af at
bruge load.
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async=false;
xmlDoc.load("books.xml"); <--problemet?
xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE,null);
....OK, er jeg helt off-track her?
MVH
Rune Jensen
| |
Stig Johansen (27-12-2008)
| Kommentar Fra : Stig Johansen |
Dato : 27-12-08 11:45 |
|
Rune Jensen wrote:
> Men jeg fandt denne:
> http://www.w3schools.com/XPath/xpath_examples.asp
Det er noget clientside.
> ...OK, er jeg helt off-track her?
Det ved jeg ikke - det kommer an på om det er clientside eller serverside vi
snakker om.
(Jeg er stadig i gang med at 'kompilere' en julefrokost, så der kan gdt være
en del bitfejl, eller problemer med interfacet, i den organiske computer)
--
Med venlig hilsen
Stig Johansen
| |
Rune Jensen (28-12-2008)
| Kommentar Fra : Rune Jensen |
Dato : 28-12-08 00:44 |
|
Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Men jeg fandt denne:
>> http://www.w3schools.com/XPath/xpath_examples.asp
>
> Det er noget clientside.
>
>> ...OK, er jeg helt off-track her?
>
> Det ved jeg ikke - det kommer an på om det er clientside eller serverside vi
> snakker om.
> (Jeg er stadig i gang med at 'kompilere' en julefrokost, så der kan gdt være
> en del bitfejl, eller problemer med interfacet, i den organiske computer)
Det er serverside.
OK, forfra. Jeg kan hente siden ind. Jeg kan replace doc typen med en
prolog. Alt det kan jeg lægge i en variabel, som så vil have XML i
stedet for XHTML-kode. Nu skal jeg have det ind i XML-objerktet, så jeg
kan bruge Xpath. Men hvordan kobler jeg den variabel sammen med objectet?
....ja, vi havde også julefrokost i går med familien, ganske hyggeligt
med sild, snaps & pakkeleg. Men den havde en vis impact på både head og
body i morges, så jeg kan godt følge dig. Jeg overvejede, om jeg skulle
tage en Bruce Willis-tour på videoen. Lader til, det er slap-off dag for
alle i dag.
;)
MVH
Rune Jensen
| |
Stig Johansen (28-12-2008)
| Kommentar Fra : Stig Johansen |
Dato : 28-12-08 07:32 |
|
Rune Jensen wrote:
> Stig Johansen skrev:
>> Rune Jensen wrote:
>>
>>> Men jeg fandt denne:
>>> http://www.w3schools.com/XPath/xpath_examples.asp
>>
>> Det er noget clientside.
>>
>>> ...OK, er jeg helt off-track her?
>>
>> Det ved jeg ikke - det kommer an på om det er clientside eller serverside
>> vi snakker om.
>
> Det er serverside.
>
> OK, forfra. Jeg kan hente siden ind. Jeg kan replace doc typen med en
> prolog. Alt det kan jeg lægge i en variabel, som så vil have XML i
> stedet for XHTML-kode. Nu skal jeg have det ind i XML-objerktet, så jeg
> kan bruge Xpath. Men hvordan kobler jeg den variabel sammen med objectet?
Vi bliver nok nødt til at have noget kode på bordet for at følge med i hvad
du mener (hvilke variabler, hvilke objekter?).
Hvis vi plukker fra det eksempel jeg henviste til:
< http://w-o-p-r.dk/tips/asp/validate.xml.asp.txt>
så viser det hvordan man henter xml/(x)html fra en given url.
Efter kald vil
objXMLH.responseText
indeholde det, der svarer til 'vis kilde' i en browser.
Hvis det er xhtml, skal vi have strikket det om til xml.
Hvis du kun har brug for indholdet, er det nok lettest at udtrække strengen
fra og med <body til og med </body>
pseudokode
xmlstring = xml prolog + ExtractBody (objXMLH.responseText)
hvor ExtractBody er en funktion der returnerer substrengen.
Hvis du vil have de andre 'ting' med (head,script osv.) kan du lave følgende
pseudokode:
xmlstring = xml prolog + "<root>" + StripDocType (objXMLH.responseText) +
"</root>"
hvor StripDocType qer en funktion der returnerer substrengen excl doctype.
For begge gælder at xml prologen tilpasses det anvendte charset.
xmlstring indeholder nu (forhåbentlig) well formed xml.
En streng lodes via loadXML, så linien:
objXML.LoadXML (objXMLH.responseText)
rettes til
objXML.LoadXML (xmlstring)
Hvis alt går godt (objXML.parseError.errorCode=0) har du nu eksempelvis
følgende muligheder:
node = objXML.getElementById("din_id")
nodelist = objXML.getElementsByTagName("dit_tag")
nodelist = objXML.selectNodes("dit_udtryk")
Jeg er lidt i tvivl om vi stadig snakker søgefunktion som i det oprindelige
indlæg.
Men hvis man vil lave søgning på tværs af sider, skal man nok have en mere
eller mindre primtiv indexering af ord med tilhørende links hvor de
optræder.
Indexeringen kunne man så opdatere ekempelvis en gang i døgnet.
Der findes vistnok nogle 'cronservices' online til den slags.
--
Med venlig hilsen
Stig Johansen
| |
Benny Hansen (30-12-2008)
| Kommentar Fra : Benny Hansen |
Dato : 30-12-08 23:45 |
|
> Vi bliver nok nødt til at have noget kode på bordet for at følge med i hvad
> du mener (hvilke variabler, hvilke objekter?).
Jeg vil gerne søge i <div class="tekst">
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (28-12-2008)
| Kommentar Fra : Stig Johansen |
Dato : 28-12-08 12:39 |
|
Rune Jensen wrote:
> XPath ligner mere eller mindre rent terperi (igen-igen), så der kan jeg
> ligesom ikke rigtigt komme videre, før noget af det andet fungerer
> (eller er forstået).
>
> Men jeg fandt denne:
> http://www.w3schools.com/XPath/xpath_examples.asp
Side-note:
Når vi snakker xml,xslt,xslfo,xpath,xquery osv.. er det nok ikke liiige
w3schools jeg ville afkonferere med.
Godt nok er der ikke datoer på artiklen, men man opererer med årstal som
2003 og 2005 i eksemplet.
En god reference til XPath kunne være:
< http://www.w3.org/TR/xpath>
(bemærk datoen)
Og til orientering, så er James Clark (se editors) en af hovedkræfterne bag
xml.
--
Med venlig hilsen
Stig Johansen
| |
|
|