2017-10-19 190 views
-1

當前頭XSLT頭問題

<Invoice xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="Factuur_insbou003.xsd"> 

新標題

<Invoice xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns="http://www.gs1.nl/factuur/insbou/004" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.gs1.nl/factuur/insbou/004 
          Factuur_insbou004.xsd"> 

我嘗試這樣做:

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

    <xsl:template match="/*[local-name()= 'Invoice']"> 
    <Invoice xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.gs1.nl/factuur/insbou/004" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <xsl:copy-of select="node()|@*"/> 
    </Invoice> 
    </xsl:template> 


</xsl:stylesheet> 

你是正確的(刪除了錯誤的代碼),我的問題是創建的xmlns = 「http://www.gs1.nl/factuur/insbou/004」。希望您能夠幫助我。謝謝

+1

目前尚不清楚是什麼問題... – Ray

+0

問題:我不能添加xmlns =「http://www.gs1.nl/factuur/insbou/004」 – LDH

回答

0

您必須明白命名空間是文檔中每個元素的限定名稱的一部分,因此您需要更改每個元素的命名空間,例如,

<xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:element> 
</xsl:template> 

然後在你的樣式表根目錄下,你可以簡單地聲明你想要的命名空間。但是當你還想要一個屬性添加到根元素,而忽略另一個,你還需要一個模板,這樣做,因此,所有的變化,你需要

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     version="1.0"  
     xmlns="http://www.gs1.nl/factuur/insbou/004" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 


    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="/Invoice"> 
     <Invoice 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xsi:schemaLocation="http://www.gs1.nl/factuur/insbou/004 
          Factuur_insbou004.xsd"> 
      <xsl:apply-templates/> 
     </Invoice> 
    </xsl:template> 

    <xsl:template match="*"> 
     <xsl:element name="{local-name()}"> 
     <xsl:apply-templates select="@* | node()"/> 
     </xsl:element> 
    </xsl:template> 

</xsl:transform>