Probleme beim Erstellen von XSL

nat81

Grünschnabel
Hallo zusammen,

ich bin ein kompletter newbie, was xml/xsl anbelangt, darum ist meine frage vermutlich auch einfach zu beantworten. Ich habe aber mit dem googeln nichts gefunden, deshalb erhoffe ich mir hier eine antwort.

Ich habe ein xml file, woraus ich ein xsl erstellen muss, damit ich das xml-file nachher im html-format anschauen kann. Ich habe hier mal das, was ich schon erstellt habe (nur ein kleines beispiel für mein problem):

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="C:\source\Richtlinien\test.xsl"?>
<nda:books xmlns:nda="http://www.nda.de/">
<book ISBN="03232324" author="Michael R. Sweet"/>
<book ISBN="454657457" author="Gerald Farin"/>
</nda:books>

Das xsl, das ich bis jetzt versucht habe zu erstellen, sieht folgendermassen aus:

<?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="/">
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td>ISBN</td>
<td>Author</td>
</tr>
<xsl:for-each select="nda:books/book">
<tr>
<td><xsl:value-of select="@ISBN" /></td>
<td><xsl:value-of select="@author" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


Ich weiss zwar wo der Fehler liegt, aber nicht, wie dies zu lösen. Und zwar kriege ich die Fehlermeldung (ich arbeite mit xmlSpy):

"Reference to undeclared namespace prefix: 'nda'. Error "

D.h. es muss an dem Präfix nda liegen, aber ich kann das xml-file nicht anpassen, da dass so geliefert wird. Hat jemand eine Ahnung wie man das anstellt? Ich bin um jede Hilfe froh!

Danke schon im voraus!
 
Zuletzt bearbeitet:
Wie die Fehlermeldung schon sagt, es fehlt die namespace-declaration zu nda:
Wenn Du die xml-datei so geliefert bekommst, ist sie falsch. Oben ins xml muß die entsprechende definition stehen, z.b.:

Code:
xmlns:nda="http://www.nda.de/"
 
Hallo Rick,

vielen Dank für deine Antwort. Werde es am Montag gleich ausprobieren. Gib dir dann Bescheid, ob's geklappt hat.
 
Hallo Rick,

Hab nun nochmals das xml-File angeguckt und es ist stimmt. Es hat nämlich tatsächlich schon eine Namespace-Deklaration zu nda. Ich habe diese nur in meinem Beispiel vergessen reinzunehmen. Es funktioniert aber trotz der Deklaration nicht. Woran könnte es sonst noch liegen?

Bin froh um jeden Hinweis!
Danke schon im voraus
 
Du mußt den namespace im xsl-file natürlich auch definieren.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:nda="http://www.nda.de/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="/">
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td>ISBN</td>
<td>Author</td>
</tr>
<xsl:for-each select="nda:books/book">
<tr>
<td><xsl:value-of select="@ISBN" /></td>
<td><xsl:value-of select="@author" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
 
Hallo Rick,

vielen Dank, habs in der Zwischenzeit auch rausgefunden. Wie gesagt, bin ein totaler Neuling was xml/xsl anbelangt, hatte noch nie damit gearbeitet, deshalb weiss ich nicht, worauf ich achten muss ;/ Aber nun hats geklappt, thnx a lot! ;)
 
Zurück