Announcement

Collapse
No announcement yet.

Namespace für Rootelement

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Namespace für Rootelement

    Hallo

    Ich habe auf einem Root Element ein xmlns Namesapce
    <Project xmlns="http://schemas.microsoft.com/project">

    Wie kann ich das Element mit Namespace im xslt auswählen?


    Hier ist das xml und das xsl das nicht funktioniert.
    XML:
    Code:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Project xmlns="http://schemas.microsoft.com/project">
    	<Name>testname.xml</Name>
    </Project>
    XSL:
    Code:
    <?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"/> 
    
    	<xsl:template match="/">   <!-- das geht nicht -->
    
    		<Projectname>
    		 <xsl:value-of select="Project/Name"/>
    		 </Projectname>
    
    	</xsl:template>
    
    </xsl:stylesheet>

  • #2
    Verwende den Namensraum aus dem XML-Dokument mit einem "Dummy-Prefix" (hier prj):

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:prj="http://schemas.microsoft.com/project" exclude-result-prefixes="prj">
      <xsl:output method="xml" version="1.0"/>
    
      <xsl:template match="/">
        <Projectname>
          <xsl:value-of select="prj:Project/prj:Name"/>
        </Projectname>
      </xsl:template>
    
    </xsl:stylesheet>

    Comment


    • #3
      Super. Das Funktioniert! Grosses Dankeschön! Leider etwas mühsam, da man vor jeden Knoten und jedes Attribut prj: schreiben muss, aber he es funtktioniert und ich kann damit leben. Wer noch eine elegantere Lösung hat bitte hier posten.

      Comment


      • #4
        Wenn XSLT 2.0 nutzbar wird, dann funktioniert es ohne Prefixes mittels xpath-default-namespace:
        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
         xpath-default-namespace="http://schemas.microsoft.com/project">
        
          <xsl:output method="xml" version="1.0" />
        
          <xsl:template match="/">
            <Projectname>
              <xsl:value-of select="Project/Name"/>
            </Projectname>
          </xsl:template>
        
        </xsl:stylesheet>

        Comment

        Working...
        X