2017-04-08 1 views
1

J'ai un xml comme ci-dessous:Transformer le XML à l'aide

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<properties> 
<entry key="user">1234</entry> 
<entry key="name">sam</entry> 
</properties> 

Je veux transformer la valeur de clé (key = "utilisateur" à key = "cm: l'utilisateur") dans un nouveau fichier XML à l'aide xslt , le fichier XML de sortie doit être comme celui-ci

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<properties> 
<entry key="cm:user">1234</entry> 
<entry key="name">sam</entry> 
</properties> 

J'utilise le ci-dessous xslt et pot saxonne:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://schema.infor.com/InforOAGIS/2"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" /> 
<xsl:template match="@*|node()"> 
<xsl:result-document href="foo.xml" method="xml"> 
    <xsl:copy> 
    <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:result-document> 
</xsl:template> 

<xsl:template match="@key[.='user']"> 
<xsl:attribute name="key"> 
     <xsl:value-of select="'cm:user'"/> 
    </xsl:attribute> 
</xsl:template> 
</xsl:stylesheet> 

Quand je le lance, je reçois l'erreur ci-dessous:
XTDE1490: Impossible d'écrire plus d'un document de résultat au même URI:
Quelqu'un pourrait-il s'il vous plaît me aider ..

Répondre

3

Vous avez simplement besoin

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

<xsl:template match="@key[.='user']"> 
<xsl:attribute name="key"> 
     <xsl:value-of select="'cm:user'"/> 
    </xsl:attribute> 
</xsl:template> 

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

Si vous souhaitez définir le résultat nom de fichier en utilisant xsl:result-document puis ajouter un modèle

<xsl:template match="/"> 
    <xsl:result-document href="foo.xml"> 
    <xsl:apply-templates/> 
    </xsl:result-document> 
</xsl:template> 
+0

Cela fonctionne très bien. Merci beaucoup Matin Honnen. –