Avatar billede claushelth Nybegynder
08. februar 2004 - 21:30 Der er 16 kommentarer og
1 løsning

simpelt problem mangler namespace

Jeg er ved at lære xsl...til at starte med :-)

og har lavet et lille eksempel fra min bog.

Jeg har en xml fil med to biler listet:
<?xml version="1.0"?>
<cars>
  <car>
    <make foreign="true">Honda</make>
    <model>Accord</model>
    <color>Black</color>
    <year>1998</year>
    <make foreign="false">Ford</make>
    <model>Scorpio</model>
    <color>Silver</color>
    <year>1995</year>
  </car>
</cars>

I samme mappe ligger min xsl fil med følgende indhold:
<?xml version="1.0" encoding="UTF-8" ?>
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="cars">
    <xsl:for-each select="car">
        <xsl:value-of select="make" />
        <xsl:text>, </xsl:text>
    </xsl:for-each>

</xsl:template>
</stylesheet>

Men jeg får at vide at den mangler et namespace..Dette står der ikke noget om i min bog!

Får denne fejl:
Reference to undeclared namespace prefix: 'xsl'. Error processing resource 'http://localhost/day8/Simple.xsl'. Line 4, Position 28

<xsl:template match="cars">

Jeg kender ikke foreskellen på xsl og xslt, så jeg håber at ? kan stilles her alligevel :-)

Claus
Avatar billede claushelth Nybegynder
08. februar 2004 - 23:19 #1
nu fandt jeg svaret på mit ? selv:

manglede at definere xsl: foran staylesheet

men der kom et nyt problem...

Den vil ikke dskrive andet end et komma, den vil ikke læse fra min xml fil...hvorfor ikke?
Avatar billede nute Nybegynder
09. februar 2004 - 10:05 #2
med den xml, og den xsl du har postet, så fungerer det fint. jeg har bare copy/pastet - og jeg får skrevet ud "Honda"

/nute
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:12 #3
er det ligemeget hvad jeg kalder den første xml fil?
Avatar billede nute Nybegynder
09. februar 2004 - 10:14 #4
navnet på filen, er jo ligemeget.

hvordan transformerer du ? direkte i en editor, eller via browser ?

/nute
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:15 #5
vs.net 2003 bruger jeg som editor, og en IE 6.0 til visning
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:17 #6
den første fil en en .xml fil og den anden er en .xsl
Er det ikke korrekt
nu har jeg forsøgt at copy/paste de to eksempler ind igen (i dag på mit arbejde på en anden computer)
Avatar billede nute Nybegynder
09. februar 2004 - 10:20 #7
*hvordan* udføres selve transformationen ? bruger du script til det, eller lader du IE udføre transformationen for dig ?

jo, det er korrekt at den første fil er en .xml fil, og den anden er .xsl fil

/nute
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:21 #8
ok...nu får jeg ikike fejl mere, men nu skriver den bare min xsl fil ud i browseren, det er da menningen at den skal skrive noget output fra xml filen...ik :-)
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:23 #9
jeg forstår ikke hvad du mener med transformationen, det har jeg ikke støt på før? Jeg er rimelig ny i xml/xsl
Avatar billede nute Nybegynder
09. februar 2004 - 10:34 #10
"transformation" er dét der sker når du lader xsl filen "oversætte" din xml fil.

transformationen fungerer på den måde at du, i din xml fil, angiver hvilken xsl fil der skal oversætte din xml. jeg har gjort følgende:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="C:\temp\cars.xsl"?>
<cars>
    <car>
        <make foreign="true">Honda</make>
        <model>Accord</model>
        <color>Black</color>
        <year>1998</year>
        <make foreign="false">Ford</make>
        <model>Scorpio</model>
        <color>Silver</color>
        <year>1995</year>
    </car>
</cars>

gemt denne fil under "c:\temp" med navnet 'cars.xml'. Derefter har jeg taget din xsl:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="cars">
        <xsl:for-each select="car">
            <xsl:value-of select="make"/>
            <xsl:text>, </xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

og gemt under "c:\temp" med navnet 'cars.xsl'. derefter åbner jeg xml filen i IE ... så er den transformeret. Grunden til at din xml er blevet transformeret, er fordi denne linje er laggt til i filen:

<?xml-stylesheet type="text/xsl" href="C:\temp\cars.xsl"?>

denne linje fortæller xml parseren (xml-fortolkeren) at xml filen skal transformeres med filen "c:\temp\cars.xsl"

mere besværlig er det ikke :o]

/nute
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:34 #11
i følge mit litteratur, skal jeg indskrive disse to filer, og det burde så udskrive:
Honda, Ford
i en browser...
Avatar billede nute Nybegynder
09. februar 2004 - 10:39 #12
i følge din litteratur, står der også helt sikkert at du er nødt til at "knytte filerne sammen" (på en eller anden måde). det er ikke bare at lave en xml fil og en xsl fil og tro at de kender til hinanden. man er nødt i sin xml fil at angive hvilken fil der skal bruges til transformation.

Der er mange måder at transformere på, men hvis du vil lade din browser om at gøre det, så *skal* du angive denne linje:

<?xml-stylesheet type="text/xsl" href="C:\temp\cars.xsl"?>

/nute
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:40 #13
ahh..ok, jeg havde misforstået det helt så..jeg troede det var xsl filen der var interfacet til browseren
Nu får jeg da i hvert fald udskrevet Honda, (så mangler jeg kun resten)
:-)
Smid et svar
Avatar billede nute Nybegynder
09. februar 2004 - 10:41 #14
"svar"
Avatar billede nute Nybegynder
09. februar 2004 - 10:43 #15
det er jo fordi du mangler at "kategorisere" 'Ford' som en ny bil. dette gør du ved at sætte informationen om 'Ford' i en ny <car> node:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="C:\temp\cars.xsl"?>
<cars>
    <car>
        <make foreign="true">Honda</make>
        <model>Accord</model>
        <color>Black</color>
        <year>1998</year>
    </car>
    <car> 
        <make foreign="false">Ford</make>
        <model>Scorpio</model>
        <color>Silver</color>
        <year>1995</year>
    </car>
</cars>
Avatar billede claushelth Nybegynder
09. februar 2004 - 10:45 #16
ja selvfølgelig..hehe, mange tak for hjælpen :-)
Avatar billede nute Nybegynder
09. februar 2004 - 10:57 #17
selv tak :o]
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