Avatar billede springer Nybegynder
13. marts 2001 - 11:02 Der er 17 kommentarer og
1 løsning

Søgning

Hej
Jeg mangler lige lidt hjælp til at komme i gang med at lave en mulighed for at søge i et XML dokument.
XML dokumentet ser nogenlunde sådan ud:
<ordrestatus>
    <entry>
        <ordrenummer>000102</ordrenummer>
        <emnenavn>MX-bakker</emnenavn>
        <rekvnr/>
        <tegningsnummer/>
        <ordremoede/>
        <grovplan/>
        <emnekritik/>
        <rettet_emne/>
        <oplaeg_vaerkt/>
        <oplaeg_godk/>
        <bestil_form/>
        <evt_aendr/>
        <faerdig_tegn/>
        <finplan/>
        <start_vaerks/>
        <evt_aendr/>
        <levering/>
        <proevekoersel/>
        <opmaaling/>
        <korrektion/>
        <evt_aendr/>
        <klart_vt/>
        <bemlin1>Dette er en test </bemlin1>
        <bemlin2>Dette er en test </bemlin2>
        <bemlin3>Dette er en test </bemlin3>
        <bemlin4>Dette er en test </bemlin4>
        <bemlin5>Dette er en test </bemlin5>
    </entry>
    <entry>
        <ordrenummer>000636</ordrenummer>
        <emnenavn>BESLAG F  ARM C</emnenavn>
        <rekvnr>FAA 1303164510</rekvnr>
        <tegningsnummer/>
        <ordremoede>
            <uge>
                <planlagt/>
                <aendring>18</aendring>
                <udfoert/>
            </uge>
        </ordremoede>
        <grovplan/>
        <emnekritik/>
        <rettet_emne/>
        <oplaeg_vaerkt/>
        <oplaeg_godk/>
        <bestil_form/>
        <evt_aendr/>
        <faerdig_tegn/>
        <finplan/>
        <start_vaerks/>
        <evt_aendr/>
        <levering>
            <uge>
                <planlagt/>
                <aendring>19</aendring>
                <udfoert/>
            </uge>
        </levering>
        <proevekoersel/>
        <opmaaling/>
        <korrektion/>
        <evt_aendr/>
        <klart_vt/>
        <bemlin1>14: Pr&#248;ves for at se om emnet h&#230;nger i fast part.</bemlin1>
        <bemlin2/>
        <bemlin3/>
        <bemlin4/>
        <bemlin5/>
    </entry>
</ordrestatus>

Det skal være muligt at kunne søge på fx. ordrenummer, og så skal der kun udskrives data for den enkelte entry.
Avatar billede getalife Nybegynder
13. marts 2001 - 13:33 #1
Ork.. nemt.. ;o)
Den klapper jeg lige sammen.
Avatar billede getalife Nybegynder
13. marts 2001 - 14:28 #2
Først lidt asp.. Her henter jeg en variabel fra URLen og opretter et \"virtuel\" child i XMLen før jeg parser.
test.asp:
<%
\' Initialize
Response.Expires = -1
Dim search

\' Process request
sti = \"xml/\"
search = Request(\"search\")

\' Responde to request
  \'Load the XML
  set xml = Server.CreateObject(\"Microsoft.XMLDOM\")
  xml.async = false
  xml.load(Server.MapPath(\"test.xml\"))

  \'Load the XSL
  set xsl = Server.CreateObject(\"Microsoft.XMLDOM\")
  xsl.validateOnParse = false
  xsl.async = false
  xsl.load(Server.MapPath(\"test.xsl\"))

\'lav virtuel XML Search
Set selectedsubcat = xml.createElement(\"search\")
xml.childNodes.Item(1).appendChild selectedsubcat
xml.childNodes.Item(1).lastChild.Text = search


\'Transform the file
  Response.Write(xml.transformNode(xsl))
%>

Så lidt xsl.. ganske standard XSL, hvor jeg har en søgeform og under den matcher jeg (i dette tilfælde ordrenummer og det indtastede i formen) og udskriver derefter resultatet.

test.xsl:
<?xml version=\'1.0\' encoding=\"ISO-8859-1\"?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">
<xsl:template match=\"/\">
<html>
<head>
<title>Søgning</title>
</head>
<body bgcolor=\"#ffffff\" topmargin=\"0\" leftmargin=\"0\" marginwidth=\"0\" marginheight=\"0\">

<!-- Søgeform -->
Skriv venligst ordrenummer:
<form action=\"test.asp\">
    <input type=\"text\" name=\"search\"/>
    <input type=\"submit\" value=\"Søg\"/>
</form>
<br/>
<hr/>
<!-- Udskrivning af resultat -->
<xsl:for-each select=\"/ordrestatus/entry\">
    <xsl:choose>
        <xsl:when test=\".[ordrenummer=/ordrestatus/search]\">
            <xsl:value-of select=\"ordrenummer\"/><br/>
            <xsl:value-of select=\"emnenavn\"/><br/>
        </xsl:when>
    </xsl:choose>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Avatar billede springer Nybegynder
13. marts 2001 - 14:58 #3
Hmm, du får det til at se så let ud. Du får svar i morgen om det var det jeg ville have det til at gøre. Har nemlig fri nu.

Hvis der er en overskrift til dette, hvad er det så, så jeg kan læse mere om det selv.
Avatar billede ehf Nybegynder
13. marts 2001 - 15:06 #4
Hvis du kun vil bruge xslt kan du evt. gøre nogenlunde det følgende:

<?xml version=\'1.0\' encoding=\"ISO-8859-1\"?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">;
<xsl:parameter name=\"Onr\" select=\"default onr\"/>
<xsl:template match=\"/ordrestatus/entry[./ordrenummer = $Onr]\">

... Her har vi fat i den entry som indeholder et ordrenummer svarende til den parameter du har angivet.

</xsl:template>
</xsl:stylesheet>

Hvis du evt bruger instant saxon (søg efter den på google.com) vil et kald se således ud:
saxon source.xml find.xsl Onr=000636
Avatar billede springer Nybegynder
14. marts 2001 - 10:15 #5
Hvis jeg nu skifter test.xml ud med en anden fil, så kan jeg ikke loade filen. Jeg får følgende fejlmeddelse:

error \'80004005\'
Unspecified error

/xml/test/test.asp, line 25

Og ja, filen jeg ønsker at få data fra er i samme bibliotek.
Avatar billede springer Nybegynder
14. marts 2001 - 10:20 #6
Hmm, har fundet ud af at den ikke kan lide at have kommentarer med. Er der en måde hvormed det kan lade sig gøre også ?
Avatar billede getalife Nybegynder
14. marts 2001 - 13:39 #7
Kan jeg ikke få lov til at se en af de filer?
Avatar billede springer Nybegynder
14. marts 2001 - 13:40 #8
Jo da, sender lige en
Avatar billede getalife Nybegynder
14. marts 2001 - 13:41 #9
fino
Avatar billede springer Nybegynder
14. marts 2001 - 13:42 #10
det er linien
<!-- created by WOSS -->
den ikke kan lide tilsyneladende
Avatar billede getalife Nybegynder
14. marts 2001 - 13:44 #11
Den fjerner vi da bare..
Er den i alle dokumenter?
Avatar billede springer Nybegynder
14. marts 2001 - 13:46 #12
Ja, i alle, men det er ikke noget problem. De data jeg arbejder med er automatisk genereret, så jeg beder bare om at få den fjernet.
Avatar billede getalife Nybegynder
14. marts 2001 - 13:47 #13
okay, ellers fjerner vi den bare via ASPen
Avatar billede springer Nybegynder
14. marts 2001 - 13:47 #14
Hvordan?
Avatar billede getalife Nybegynder
14. marts 2001 - 13:49 #15
Desuden er den nok ikke så glad for æøå i XMLen..
<?xml version=\"1.0\" encoding=\"ISO8859-1\" ?>
Avatar billede springer Nybegynder
14. marts 2001 - 13:51 #16
Ja, det problem fik dog hurtigt løst ved at bruge ascii værdierne i stedet.
Vi havde problemer med at puteren ikke ville acceptere
<?xml version=\"1.0\" encoding=\"ISO8859-1\" ?>
af en eller anden grund. Derfor gik vi over til det andet
Avatar billede getalife Nybegynder
14. marts 2001 - 13:54 #17
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/xmlsdk/xmld7lgh.htm <-- Den kan du måske bruge til noget.
tryk på Show TOC for at se alle.
Avatar billede getalife Nybegynder
14. marts 2001 - 13:54 #18
Ehm.. nevermind the Show toc thingy
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester