Avatar billede limemedia Nybegynder
14. juli 2002 - 16:29 Der er 1 kommentar og
3 løsninger

foreach problem - newbie alarm ...

Det er under 24 timer siden det lykkedes mig at få installeret Sablotron på min BSD, så bær over med min uvidenhed :))

Jeg har følgende eksperimentale xml dokument
---------
<?xml version="1.0" encoding="iso-8859-1"?>
<me>
    <name>John Doe</name>
    <address>94, Main Street, Nowheresville 16463, XY</address>
    <tel>738 2838</tel>
    <email>johndoe@black.hole.com</email>
    <web>
        <url>http://www.unknown_and_unsung.com/</url>
        <url>http://www.ljweb.com/</url>
        <url>http://www.unknown_and_unsung.com/</url>
        <url>http://www.ljweb.com/</url>
    </web>
</me>



Som jeg prøver at matche med følgende xsl dokument
---------
<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" indent="no"/>
<xsl:template match="/me">
    <html>
        <head>
        </head>
        <body>
            <h1>Contact information for <b><xsl:value-of select="name"/></b></h1>
            <h2>Mailing address:</h2>
            <xsl:value-of select="address"/>

            <h2>Phone:</h2>
            <xsl:value-of select="tel"/>

            <h2>Email address:</h2>
            <xsl:value-of select="email"/>

            <h2>Web site URL:</h2>
            <ul>
            <xsl:for-each select="web">
                    <xsl:value-of select="url" />
            </xsl:for-each>
            </ul>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>


Resultatet heraf giver
---------
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><h1>Contact information for <b>John Doe</b></h1><h2>Mailing address:</h2>94, Main Street, Nowheresville 16463, XY<h2>Phone:</h2>738 2838<h2>Email address:</h2>johndoe@black.hole.com<h2>Web site URL:</h2><ul>http://www.unknown_and_unsung.com/</ul></body></html>


okay, og til spørgsmålene)
1: jeg får kun udskrevet én <url> hvor jeg ville forvente 4. I et forsøg med <li> foran fik jeg på et tidspunkt 4 (altså den loopede) men så fik jeg ingen værdier printet.

2) mit output, der eksporteres til en html fil skrives uden newlines. Hvordan kan jeg få den til at placere et par newlines så det også er struktureret output ?

3) jeg har arbejdet med xml og sgml som datalagring inden populering af en database - hvis man gerne vil med på de nye teknologier, XSL, XPATH... er der så en bibel at læse, et gyldent sted på nettet eller ... ?

4) jeg har installeret Sablotron 0.90 med Expat 1.95.4 på min FreeBSD... Ser jeg fx. O'Reilly er meget lejnet op til Apaches Xalan - er det et dårligt valg af parser jeg har foretaget ?



Håber der er nogen der kan kickstarte mine kommende xslt eksperimenter. 20 point til hvert svar :)

/ LJ
www.ljweb.com
Avatar billede hells Nybegynder
14. juli 2002 - 16:45 #1
1:
<xsl:for-each select="web/url">
  <xsl:value-of select="." />
</xsl:for-each>
Så tager den hver url i stedet for hver web-element
3: http://www.w3schools.com/
Avatar billede limemedia Nybegynder
14. juli 2002 - 16:59 #2
1: Jamen det virker jo :)) så tæt og alligevel så langt fra
3: hmm, havde ellers lige dømt den til en værre skæbne... Overvejede at lede efter en O*Reilly eller Wrox bog - forudsat de ikke er skrevet for direkte til én version
Avatar billede Slettet bruger
15. juli 2002 - 09:18 #3
2: Sæt "indent" attributten på xsl:output til "yes" - det giver processoren lov til at indsætte ekstra whitespace i output'et.

3: "Beginning XML" er rigtig god, både som "aha"-læsning og til opslag.

/CS
Avatar billede limemedia Nybegynder
25. juli 2002 - 05:39 #4
Tak for svarene venner...
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