копирование выбранного имени

#c# #xml #xslt

#c# #xml #xslt

Вопрос:

У меня есть эти данные в исходном XML:

 <Firma ID_FIRMY="15" ROLE_FIRMY="O " KOD_FIRMY="Tomášov">
 

Это мой XSL:

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">                      
<xsl:output method="xml" encoding="utf-8" indent="no"/>

<xsl:template match="root/Firma">
<MoneyData> 
    <xsl:copy-of select="@ID_FIRMY"/>
    <xsl:copy-of select="@KOD_FIRMY"/>
</MoneyData>                         
</xsl:template>                                 
</xsl:stylesheet>
 

Это мой вывод XML:

 <?xml version="1.0" encoding="utf-8"?>
<MoneyData ID_FIRMY="15" KOD_FIRMY="Tomášov"/>
 

Но мне нужен этот вывод: (изменить имена ..)

 <?xml version="1.0" encoding="utf-8"?>
<MoneyData KodAgendy="15" HospRokOd="Tomášov"/>
 

Как мне это сделать?

Ответ №1:

Напишите шаблоны для преобразования атрибутов:

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">                      
<xsl:output method="xml" encoding="utf-8" indent="no"/>

<xsl:template match="root/Firma">
<MoneyData> 
    <xsl:apply-templates select="@* | node()"/>
</MoneyData>                         
</xsl:template> 


<xsl:template match="Firma/@ID_FIRMY">
  <xsl:attribute name="KodAgendy"><xsl:value-of select="."/></xsl:attribute>   
</xsl:template>

<xsl:template match="Firma/@KOD_FIRMY">
  <xsl:attribute name="HospRokOd"><xsl:value-of select="."/></xsl:attribute>   
</xsl:template>

<xsl:template match="@ROLE_FIRMY"/>

</xsl:stylesheet>