2016-03-24 20 views
-1

Uzun süre bununla uğraştım ve cevabı hiçbir yerde bulamıyorum - ya da belki de soruları nasıl bildiğimi bilmiyorum.Kök öğesinde ad alanı bulunan XSLT

Site haritasını gösteren bir XML dosyanız var.

<?xml version="1.0" encoding="UTF-8"?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
     <loc>http://...</loc> 
     <pagetitle>English</pagetitle> 
     <children> 
     <url> 
      <loc>http://...</loc> 
      <pagetitle>page title</pagetitle> 
     </url> 
     <children> 
      ... 

Bu XML, bir site haritasını temsil etmektedir. Bunu bir hiyerarşik listeye dönüştürmek için bir XSLT yazdım. Çalışır Ben <urlset xmlns="..> varken

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="html" indent="yes" version="4.0"/> 

    <xsl:template match="/"> 
     <ul><xsl:apply-templates /></ul> 
    </xsl:template> 

    <xsl:template match="url"> 
     <li><a href="{loc}"><xsl:value-of select="pagetitle"/></a></li> 
     <xsl:apply-templates select="children"/> 
    </xsl:template> 

    <xsl:template match="children"> 
     <ul><xsl:apply-templates select="url"/></ul> 
    </xsl:template> 

</xsl:stylesheet> 

Bu stil sayfası çalışmıyor ama değiştirirseniz düğüm sadece <xmlns> (özniteliği olmadan) kullanmak.

Ben bir XSLT gurunundan çok uzaktayım. Herhangi bir öneri var mı?

+0

Bu çok sık sorulan bir sorudur - arama yapmak için * namespace *. –

+0

Sorunuzun başlığını SO arama kutusuna girdiğinizde, hemen hemen aynı sorularla 125 sonuç elde edilir. Onları nasıl bulmayı başaramadın? –

cevap

0

Bulunamadı. Bunu sadece XSLT'ime ekledim.

<!-- by default, copy all nodes --> 
    <xsl:template match="*" mode="copy-no-namespaces"> 
     <xsl:element name="{local-name()}"> 
      <xsl:copy-of select="@*"/> 
      <xsl:apply-templates select="node()" mode="copy-no-namespaces"/> 
     </xsl:element> 
    </xsl:template> 
+0

Bulmanız gerekir: http://stackoverflow.com/questions/34758492/xslt-transform-doesnt-work-until-i-remove-root-node/34762628#34762628 (örneğin) yerine. –