Avatar billede x-guy Nybegynder
05. juli 2007 - 15:25 Der er 1 kommentar og
1 løsning

XMLNS "smitter af" på childnodes

Hej,

Med XSLT har jeg sat et namespace på en node, men nodes childnodes får nu også en xmlns-attributte uden nogen værdi. Hvordan slipper jeg af med med det tomme namespace på nodens childnodes?

Min XSL:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" media-type="text/xml" />
   
    <xsl:variable name="filenamePrefix">/content/</xsl:variable>
    <xsl:variable name="priority">0.2</xsl:variable>
    <xsl:variable name="changeFreq">monthly</xsl:variable>

    <xsl:template match="/">
        <xsl:element name="urlset" namespace="http://www.sitemaps.org/schemas/sitemap/0.9">
            <xsl:apply-templates select="//image">
                <xsl:sort select="@filename" />
            </xsl:apply-templates>
        </xsl:element>
    </xsl:template>

    <xsl:template match="//image">
        <xsl:element name="url">
            <xsl:element name="loc">
                <xsl:value-of select="concat($filenamePrefix, @filename)" />
            </xsl:element>
            <xsl:element name="priority">
                <xsl:value-of select="$priority" />
            </xsl:element>
            <xsl:element name="changefreq">
                <xsl:value-of select="$changeFreq" />
            </xsl:element>
        </xsl:element>
    </xsl:template>
Avatar billede x-guy Nybegynder
06. juli 2007 - 11:11 #1
Glemte lige at vises et eksempel på outputtet:

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url xmlns="">
    <loc>/content/file1.ext</loc>
    <priority>0.2</priority>
    <changefreq>monthly</changefreq>
  </url>
  <url xmlns="">
    <loc>/content/file2.ext</loc>
    <priority>0.2</priority>
    <changefreq>monthly</changefreq>
  </url>
.....

Problemet er altså <url xmlns=""> -Hvordan slipper jeg af med xmlns attributten?
Avatar billede x-guy Nybegynder
10. juli 2007 - 11:08 #2
Fandt ud af det...
Man skal bare angive det samme namespace på alle childnodes, a la:

<xsl:template match="//image">
        <xsl:element name="url" namespace="http://www.sitemaps.org/schemas/sitemap/0.9">
            <xsl:element name="loc" namespace="http://www.sitemaps.org/schemas/sitemap/0.9">
                <xsl:value-of select="concat($filenamePrefix, @filename)" />
            </xsl:element>
            <xsl:element name="priority" namespace="http://www.sitemaps.org/schemas/sitemap/0.9">
                <xsl:value-of select="$priority" />
            </xsl:element>
            <xsl:element name="changefreq" namespace="http://www.sitemaps.org/schemas/sitemap/0.9">
                <xsl:value-of select="$changeFreq" />
            </xsl:element>
        </xsl:element>
    </xsl:template>
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