Peter: XSL funktioniert mit XML Schema nicht? Verschluckt values

Hallo Leute,
hab heute etwas Erstaunliches entdeckt...

XML Datei

  
<?xml version='1.0'?>  
<?xml-stylesheet type="text/xsl" href="application.xsl"?>  
  
<application name="Test.Wiki" xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="application.xsd">  
  
	<meta>  
		<name>test</name>  
	</meta>  
	  
</application>  

Zugehörige XSL Datei:

  
<?xml version="1.0" encoding="ISO-8859-1"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
  
<xsl:template match="/">  
  <html>  
  <body>Name: <xsl:value-of select="application/meta/name" />  
  </body>  
  </html>  
</xsl:template>  
  
</xsl:stylesheet>  

Eindeutig müsste der Name ,,test´´ ausgegeben werden,
aber leider wird ausser ,,Name:´´ nichts herausgegeben.

Falls ich folgendes aus der XML entferne, wird jedoch alles wie beabsichtig ausgegeben:

 xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="application.xsd"  

Kann mir das jem. erklären?

  1. Hallo Peter,

    hab heute etwas Erstaunliches entdeckt...

    Eher etwas ganz Natürliches.

    <application name="Test.Wiki" xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="application.xsd">

    <meta>
    <name>test</name>
    </meta>

    </application>

      
    Die betrachteten Elemente liegen im Default-Namespace (xmlns), welche im XSLT-Stylesheet ebenfalls bekannt gemacht werden müssen:  
      
    ~~~xml
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
     xmlns:w3s="http://www.w3schools.com">  
      
    </xsl:stylesheet>
    

    Zugriff dann über das gewählte Prefix (hier w3s):

    <xsl:value-of select="w3s:application/w3s:meta/w3s:name" />

    Mit der Schema-Referenz hat das nichts zu tun.

    Hinweis: Unter XSLT 2.0 kann "w3s:" bei Nutzung von <xsl:stylesheet ... xpath-default-namespace="...">...</xsl:stylesheet> entfallen.

    Grüße,
    Thomas

    1. Die betrachteten Elemente liegen im Default-Namespace (xmlns), welche im XSLT-Stylesheet ebenfalls bekannt gemacht werden müssen

      Danke, hat geklappt....

      Hab leider ein weiteres Problem in der XML und zwar möchte er die href="" mit einer URL in der Form von http://subdomain.domain.de/test.xsl nicht annehmen.
      Speichere ich dieselbe XSL Datei lokal ab, funktioniert alles prima.

      Woran könnte das liegen?

      1. Hallo,

        Hab leider ein weiteres Problem in der XML und zwar möchte er die href="" mit einer URL in der Form von http://subdomain.domain.de/test.xsl nicht annehmen.
        Speichere ich dieselbe XSL Datei lokal ab, funktioniert alles prima.

        Woran könnte das liegen?

        same origin policy

        siehe weiter oben in deinem anderen thread.

        Grüße
        Thomas