2015-10-13 22 views
0

我想將模板複製到輸出文檔中,但是模板標籤中出現附加屬性。我正在使用相同的文件進行轉換輸入。爲什麼在轉換後出現附加屬性

這就是:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:import href="../Product/templates.xsl"/> <!--in fb changees--> 
<xsl:output method="xml"/> 
    <xsl:template name="root" match="/"> 
     <xsl:copy-of select="/xsl:stylesheet/xsl:template[@name='test-case-1']"/> 
    </xsl:template> 

    <xsl:template name="test-case-1" > 
      <test-case-1 name="koza"> 
       <xsl:value-of select="100"/> 
      </test-case-1> 
    </xsl:template> 
</xsl:stylesheet> 

這是輸出:

<xsl:template xmlns:xsl="http://www.w3.org/1999/XSL/Transform" name="test-case-1"> 
<test-case-1 name="koza"> 
    <xsl:value-of select="100"/> 
</test-case-1> 

讓我困擾的是xmlns:xsl作爲<xsl:template>標籤的屬性出現。爲什麼這個命名空間屬性出現在xsl:template

謝謝。

我期望的輸出是這樣的:

<xsl:template name="test-case-1"> 
     <test-case-1 name="koza"> 
      <xsl:value-of select="100"/> 
     </test-case-1> 
    </xsl:template> 
+1

因爲這是定義'xsl:'前綴的地方。 – EJP

+0

有沒有辦法避免它? –

+2

'xmlns:xls'不是一個屬性,而是一個名稱空間聲明。如果您使用前綴「xsl:」複製元素,則應該存在名稱空間聲明。看起來你正在將XSLT應用到自己。你能在這種情況下顯示你期望的確切輸出嗎?謝謝! –

回答

1

XSLT輸出將始終命名空間,良好的。如果輸出包含名稱空間前綴的名稱,那麼它將始終包含該前綴的聲明。

爲什麼你想產生不合格的輸出?

如果您想將此輸出複製/粘貼到更大的XML文檔中,額外的名稱空間聲明不會造成任何損害。如果使用XSLT轉換將其複製到更大的XML文檔中,額外的名稱空間聲明將消失。

相關問題