2012-05-15 123 views
0

我有xml我想複製就像(檢查xmlns =「」和標籤。我想創建原樣。總計算照顧。只有這個問題。它是有效的仍然客戶想要預期的格式是這樣的。任何幫助,不勝感激。Xslt Blank命名空間

 **Input.xml** 

<Employees> 
    <employee> 
    <dept>1</dept> 
    <sec></sec> 
    </employee> 
     <employee> 
     <dept>2</dept> 
      <sec></sec> 
     </employee> 
     </Employees> 

預計

 <Employees xmnls="1.2" xmlns:xsi="3" xsi:schemalocation="4"> 
       <totalemp>2</totalemp> 
       <employee> 
       <dept>1</dept> 
        <sec></sec> 
       <employee> 
        <employee> 
         <dept>2</dept> 
           <sec></sec> 
        <employee> 
        </Employees> 

實際

     <Employees> 
          <totalemp>2</totalemp> 
          <employee xmlns=""> 
          <dept>1</dept> 
           <sec/> 
          </employee> 
          <employee> 
           <dept>2</dept> 
            <sec/> 
           <employee> 
           </Employees> 
+0

可能重複http://stackoverflow.com/questions/10559129/xslt-copying -as-is) –

回答

0

Unles我錯誤地理解了您的要求,您可以匹配員工元素,並輸出添加了所需名稱空間的新元素。您還需要匹配其他元素,並指定默認名稱空間以避免出現xmlns=''

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

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

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

    <xsl:template match="Employees"> 
     <Employees xmlns="1.2" xmlns:xsi="3" xsi:schemalocation="4"> 
     <xsl:apply-templates select="@*"/> 
     <totalemp> 
      <xsl:value-of select="count(employee)"/> 
     </totalemp> 
     <xsl:apply-templates select="node()"/> 
     </Employees> 
    </xsl:template> 
</xsl:stylesheet> 

當施加到示例XML,下面是輸出:

<Employees xmnls="1.2" xsi:schemalocation="4" xmlns:xsi="3"> 
    <totalemp>2</totalemp> 
    <employee> 
     <dept>1</dept> 
     <sec/> 
    </employee> 
    <employee> 
     <dept>2</dept> 
     <sec/> 
    </employee> 
</Employees> 
[XSLT複製AS IS](的
+0

Iam still geting Xmlns =「」在目的地 –

+0

對不起,我的錯。我的XSLT有一個錯字,這意味着它無法正常工作。我現在糾正了這個問題。 –

+0

希望生成我試過method = html仍然結果相同 –