Rafael: Erzeugen eines Elements mit einem Namespace

Guten Abend

ich versuche derzeit eine XML-Datei ins RDF-Format umzuwandeln. Das klappt aber nicht so ganz:

<xsl:stylesheet version="2.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:ns="http://www.myhouse.de/" >

<xsl:template match="/">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <xsl:for-each select="/Projekt/Person/" />
      <xsl:variable name="name" select="replace(personname, ' ', '')" />
      <xsl:element name="ns:{$name}">
        asasd
      </xsl:element>
  </rdf:RDF>
</xsl:template>

</xsl:stylesheet>

Ich hab das mal vereinfach gezeigt. Jetzt möche ich gernde als Ergebnis das Element ns:DanielMeyerasasd</ns:DanielMeyer> usw. haben. Saxon 9 sagt mir nun aber "Invalid element name. QName cannot end with {ns:}."

Kann mir hier jemand sage, was das bedeutet? Ich find einfach nicht die Lösung. Ich seh es einfach nicht.

Gruß

Daniel

  1. Hallo Daniel,

    Ich hab das mal vereinfach gezeigt. Jetzt möche ich gernde als Ergebnis das Element ns:DanielMeyerasasd</ns:DanielMeyer> usw. haben. Saxon 9 sagt mir nun aber "Invalid element name. QName cannot end with {ns:}."

    $name ist bei Dir leer ("ns:{$name}" evaluiert bei Dir zu "ns:", das besagt die Fehlermeldung) - sicher, dass Dein XPath-Ausdruck für die Variable $name korrekt ist? Lass Dir die mal ausgeben...

    Viele Grüße,
    Christian

    1. Vielen Dank.

      Es lag einem doppelten Namespace. Ich hab es übergeben und habe dann ns:ns:name gehabt.

      1. Ich wuerde an deiner Stelle aber trotzdem das xsl:element sauber schreiben

        <xsl:element name="{$name}" namespace="http://www.myhouse.de/">
        assad
        </xsl:element>

        Gruss, H.