2012-05-15 8 views
0

J'ai xml je veux copier comme est (vérifiez xmlns = "" et les balises .je veux créer comme est le calcul total est pris en charge seulement ce problème il est valide. le format devrait être comme ça. toute aide grandement appréciée.Xslt Espace de noms vide

 **Input.xml** 

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

attendus

 <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> 

réels

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

double possible de [copie XSLT AS IS] (http://stackoverflow.com/questions/10559129/xslt-copying -as-is) –

Répondre

0

unles s J'ai mal compris votre exigence, vous pouvez simplement faire correspondre l'élément Employés, et afficher un nouvel élément avec les espaces de noms requis ajoutés. Vous devrez également faire correspondre d'autres éléments et spécifier l'espace de nom par défaut sur eux pour éviter l'apparition de 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> 

Appliqué à votre XML exemple, ce qui suit est sortie:

<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> 
+0

Iam obtient toujours Xmlns = "" dans la destination –

+0

Désolé, ma faute. J'ai une faute de frappe dans mon XSLT qui signifiait que cela ne fonctionnait pas correctement. J'ai corrigé cela maintenant. –

+0

cherche à générer J'ai essayé méthode = html toujours le même résultat –