im coincé avec ce problème.Comment accéder à l'enfant d'un noeud avec un nom de noeud dynamique dans XSLT
Je cette XML:
<Document>
<Type>ABC</Type>
<Header>
<Date>15-01-2017</Date>
<Time>11:00 AM</Time>
</Header>
<Body>
<Name>Juan</Name>
<Age>10</Age>
<Address>
<City>City</City>
<Country>Country</Country>
<Block>Block</Block>
</Address>
</Body>
</Document>
Et je cette XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:variable name ="DocumentType" select ="//Document/Type" />
<xsl:template match ="Document">
<Root>
<xsl:apply-templates select ="Header" />
<xsl:element name="Data{$DocumentType}">
<xsl:call-template name="Data">
<xsl:with-param name="type" select ="$DocumentType" />
</xsl:call-template>
</xsl:element>
</Root>
</xsl:template>
<xsl:template name ="Data">
<xsl:param name="type" />
<Name>
<xsl:value-of select ="Body/Name" />
</Name>
<Age>
<xsl:value-of select ="Body/Age" />
</Age>
<xsl:element name="Address{$type}">
<City>
<xsl:value-of select ="City"/>
</City>
<Country>
<xsl:value-of select ="Country"/>
</Country>
<Block>
<xsl:value-of select ="Block"/>
</Block>
</xsl:element>
</xsl:template>
<xsl:template match ="Header">
<Header>
<DateCreated>
<xsl:value-of select ="Date"/>
</DateCreated>
<TimeCreated>
<xsl:value-of select ="Time"/>
</TimeCreated>
</Header>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
mon problème est que je ne peux pas accéder aux valeurs du nœud enfant de l'adresse dans le fichier XML, Je vois seulement ceci:
<Root>
<Header>
<DateCreated>15-01-2017</DateCreated>
<TimeCreated>11:00 AM</TimeCreated>
</Header>
<DataABC>
<Name>Juan</Name>
<Age>10</Age>
<AddressABC>
<City></City>
<Country></Country>
<Block></Block>
</AddressABC>
</DataABC>
</Root>
Quelqu'un peut-il m'aider à me montrer mon erreur.
Merci
Je suis étonné de savoir pourquoi vous appliquez des modèles à 'Header', mais choisissez d'appeler un modèle nommé pour gérer' Body'. Et bien sûr, le modèle de transformation d'identité ajouté à la fin ne fait rien. –