2017-08-21 4 views
0

Wenn möglich, möchte ich einen XML-Tag-Namen mit XSLT ändern. Mit dem Wert, der der Bezeichnung zugewiesen ist, möchte ich dafür den neuen Tag-Namen in der XML-Ausgabe verwenden.XML-Element-Tag mit XSLT ändern

Die XML:

<?xml version="1.0" encoding="UTF-8"?> 
<x> 
    <y> 
     <z value="john" designation="manager"></z> 
     <z value="mike" designation="associate"></z> 
     <z value="dave" designation="associate"></z> 
    </y> 
</x> 

Die XSL:

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

    <xsl:param name="request_tag"/> 
    <xsl:template match="x"> 
     <employees> 
      <xsl:apply-templates /> 
     </employees>  
    </xsl:template> 

    <xsl:template match="y"> 
     <employee> 
      <xsl:apply-templates /> 
     </employee> 
    </xsl:template> 

    <xsl:template match="z" value="{@value}"> 
     <xsl:element name="{$request_tag}"> 
      <xsl:value-of select="@value"/> 
      <xsl:apply-templates /> 
     </xsl:element>  
    </xsl:template> 

</xsl:stylesheet> 

Gewünschtes Ergebnis in XML-Form:

<?xml version="1.0" encoding="UTF-8"?> 
<employees> 
    <employee> 
     <manager>john</manager> 
     <associate>mike</associate> 
     <associate>dave</associate> 
    </employee> 
</employees> 

Antwort

0

den Wert Bezeichnung einzusetzendes ich dafür möchte zu sein der neue Tag-Name in der XML-out stellen.

Also warum nicht Sie tun genau das, was Sie gesagt haben:

<xsl:template match="z"> 
    <xsl:element name="{@designation}"> 
     <xsl:value-of select="@value"/> 
    </xsl:element>  
</xsl:template> 

Ich sehe nicht, was ist der Zweck:

<xsl:param name="request_tag"/>