D'accord, je suis en train d'éditer le message original. Je suppose que j'ai essayé un peu beaucoup en remplaçant les étiquettes de nom du XML original. Quoi qu'il en soit, voici l'extrait du fichier d'origine:besoin d'aide pour transformer XML en XML en utilisant XSL
<EMPLOYEE_LIST>
<EMPLOYEES>
<EMPLOYEE>
<EMPID>650000</EMPID>
<FIRST_NAME>KEITH</FIRST_NAME>
<MIDDLE_NAME>HUTCHINSON</MIDDLE_NAME>
<LAST_NAME>ROGERS</LAST_NAME>
<EMP_TYPE></EMP_TYPE>
<EMP_REF_ID>500000</EMP_REF_ID>
<JOINED_ON>2001-10-06</JOINED_ON>
<COMMENTS>Miscellanous Comments</COMMENTS>
<NATIONALITY>
<VALUE>American</VALUE>
</NATIONALITY>
<EMP_AKA>
<AKA_NAME>Danny</AKA_NAME>
</EMP_AKA>
<EMP_AKA>
<AKA_NAME>Dan</AKANAME>
</EMP_AKA>
<EMP_AKA>
<AKA_NAME>Ray</AKA_NAME>
</EMP_AKA>
<EMP_ADDR>
<STREET> </STREET>
<CITY> </CITY>
<STATE> </STATE>
<ZIP> </ZIP>
<COUNTRY> </COUNTRY>
</EMPLOYEE>
</EMPLOYEES>
</EMPLOYEE_LIST>
La question que je suis confronté avec le XML ci-dessus est que je ne peux pas trouver un moyen de s'adapter multiples Alias (Alias) attributs dans une propriété unique et XSL que je me sers de cette transformation est la suivante:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/EMPLOYEE_LIST">
<employees>
<xsl:apply-templates select="EMPLOYEES/node()"/>
</employees>
</xsl:template>
<xsl:template match="EMPLOYEE">
<employee>
<xsl:apply-templates select="*"/>
</employee>
</xsl:template>
xsl:template match="EMPLOYEE/EMPID">
<emp_id>
<xsl:value-of select="."/>
</emp_id>
</xsl:template>
<xsl:template match="EMPLOYEE/FIRST_NAME">
<f_name>
<xsl:value-of select="."/>
</f_name>
</xsl:template>
<xsl:template match="EMPLOYEE/MIDDLE_NAME">
<m_name>
<xsl:value-of select="."/>
</m_name>
</xsl:template>
<xsl:template match="EMPLOYEE/LAST_NAME">
<l_name>
<xsl:value-of select="."/>
</l_name>
</xsl:template>
.
.
.
.
.
<xsl:template match="EMPLOYEE/EMP_AKA">
<aka_list>
<xsl:for-each select="AKA_NAME">
<aka>
<xsl:for-each select=".">
<xsl:apply-templates/>
</xsl:for-each>
</aka>
</xsl:for-each>
</aka_list>
</xsl:template>
</xsl:stylesheet>
le XSL donnée ci-dessus lorsqu'il est appliqué à mon XML donne le résultat suivant:
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<emp_id>111345</emp_id>
<f_name>KEITH</f_name>
<m_name>HUTCHINSON</m_name>
<l_name>ROGERS</l_name>
<aka_list>
<aka>Danny</aka>
</aka_list>
<aka_list>
<aka>Dan</aka>
</aka_list>
<aka_list>
<aka>Ray</aka>
</aka_list>
</employee>
</employees>
ce qui est pas ce que je suis t riant pour atteindre comme j'ai besoin des données dans le format suivant:
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<emp_id>111345</emp_id>
<f_name>KEITH</f_name>
<m_name>HUTCHINSON</m_name>
<l_name>ROGERS</l_name>
<aka_list>
<aka>Danny</aka>
<aka>Dan</aka>
<aka>Ray</aka>
</aka_list>
</employee>
</employees
Y at-il un moyen d'atteindre cet objectif? Pour aller de l'avant, il y a des éléments dans le XML qui sont en très grand nombre, par exemple AKA_NAME.
<aka_list>
<aka>Danny</aka>
</aka_list>
<aka_list>
<aka>Dan</aka>
</aka_list>
<aka_list>
<aka>Ray</aka>
</aka_list>
<aka_list>
<aka>Danny_2</aka>
</aka_list>
<aka_list>
<aka>Dan_2</aka>
</aka_list>
<aka_list>
<aka>Ray_2</aka>
</aka_list>
La transformation ne doit faire avancer le top 5 et le sixième devrait être tronqué comme:
<aka_list>
<aka>Danny</aka>
<aka>Dan</aka>
<aka>Ray</aka>
<aka>Danny_2</aka>
<aka>Dan_2</aka>
</aka_list>
La sortie que vous avez publiée ne correspond pas au modèle XSLT (pas d'élément AKA_LIST dans la sortie). –
' JOHN FILTER' s'ouvre avec AKA se ferme avec ALIAS, erreur de validation .. soyez sûr de votre entrée XML. –
Je ne comprends pas, vous avez '' dans votre code, mais '' et '' dans votre sortie ?? Exactement celui que vous voulez ?? –