[XML & XSL] namespace in XML document geeft geen data

Pagina: 1
Acties:

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Ik heb een XSD gemaakt in welke ik een namespace gedefinieerd heb. op basis van dit XSD document heb ik een XML document gemaakt (met die namespace erin)

XML:
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="Default.xsl"?>
<acw xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://basspruit.sytes.net/anime/ Names.xsd">
    <title xmlns="http://basspruit.sytes.net/anime/">
        <name>zxcvb</name>
        <originaltitle>abcdefgh</originaltitle>
    </title>
</acw>


Ik heb hierbij een XSL stylesheet gemaakt
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="Templates.xsl" />
    <xsl:template match="/">
        <html>
            <xsl:call-template name="head" />
            <body>
                <table cellspacing="0" cellpadding="0" border="1" style="border-collapse: collapse;">
                    <tr>
                        <td colspan="2">
                            <xsl:call-template name="navigation"></xsl:call-template>
                        </td>
                    </tr>
                    <tr>
                        <td>Name:</td>
                        <td>
                            <wwd:value-of select="/acw/title/name" />
                        </td>
                    </tr>
                    <tr>
                        <td>Original Title:</td>
                        <td><wwd:value-of select="/acw/title/originaltitle" /></td>
                    </tr>
                    <xsl:call-template name="copyright"></xsl:call-template>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>


De import stylesheet werkt gewoon. Ik krijg ook wel een pagina te zien, maar dan zonder mijn gegevens. Nu heb ik hierop ook gegoogled en hier [rml][ XML/XSLT] namespace probleem....[/rml] gekeken, maar ik kom er nog steeds niet uit. Hoe kan ik dit werkend krijgen?

(misschien overbodig, maar toch even...) Zonder die namespace werkt alles wel.

Verwijderd

Twee dingen:

1- waarom gebruik je "wwd" als namespace voor de XSL elementen "value-of"?
Dat moet gewoon "xsl" zijn.

2- je element "title" heet geen "title" want je gebruikt een namespace.
Daarom heet "title" feitelijk "http://basspruit.sytes.net/anime/title"

Omdat dat laatste teveel zou worden om steeds te moeten opschrijven, is het gebruikelijk om daarvoor een aparte namespace prefix te maken in je stylesheet, zoiets dus:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:lalala="http://basspruit.sytes.net/anime/">

en je refereert dan aan je elementen als volgt:

<xsl:value-of select="/acw/lalala:title/lalala:name"/>

Noot: element "acw" heeft geen namespace prefix, want dat heeft 'ie in je bron document ook niet; pas vanaf element "title" bestaat er die namespace.

Hint: Er is een hele goeie FAQ over XSL (met ook een hoofdstuk over XSL en NameSpaces) te vinden op:
http://www.dpawson.co.uk/

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Ik ga hier eens een tijdje mee spelen, hartstikke bedankt!

offtopic:
ik heb idd een stukje van mijn test per ongeluk laten zitten, dus daar zat nog iets wat er niet thuishoort... (puntje 1)


edit:
Dit werkt dus idd wel!

Mijn dank is groot!

[ Voor 17% gewijzigd door BasSpruit op 09-01-2006 16:12 ]