J'essaie de transmettre une valeur d'un modèle à un autre modèle. Bien que j'ai trouvé quelques exemples dans ce forum, mais je suis tout simplement incapable de le faire.Passage de valeurs d'un modèle à un autre
Ci-dessous mon XML:
<pi:PayGroup xmlns:pi="urn:com.sample/file">
<pi:Header>
<pi:Version>17</pi:Version>
<pi:Payroll_Company_Name>ABCD</pi:Payroll_Company_Name>
<pi:Pay_Group_ID>0307</pi:Pay_Group_ID>
</pi:Header>
<pi:Employee>
<pi:Summary>
<pi:Employee_ID>12345678</pi:Employee_ID>
<pi:Name>Test Employee</pi:Name>
</pi:Summary>
<pi:Position>
<pi:Business_Title>Lead Learning Specialist</pi:Business_Title>
<pi:Worker_Type>P</pi:Worker_Type>
<pi:Position_Time_Type>Full_time</pi:Position_Time_Type>
<pi:Compensation_Effective_Date>2017-07-01</pi:Compensation_Effective_Date>
<pi:Base_Pay_Currency>EUR</pi:Base_Pay_Currency>
<pi:Base_Pay_Frequency>4-Weekly</pi:Base_Pay_Frequency>
<pi:Organization_One>0307_3075999496</pi:Organization_One>
<pi:Organization_Two>0307</pi:Organization_Two>
<pi:Supervisor_ID>00295975</pi:Supervisor_ID>
<pi:Supervisor_Name>Simba Sang (98765432)</pi:Supervisor_Name>
</pi:Position>
<pi:Earnings>
<pi:Start_Date>2017-02-06</pi:Start_Date>
<pi:Currency>EUR</pi:Currency>
</pi:Earnings>
</pi:Employee>
</pi:PayGroup>
est inférieure à la XSLT qui est utilisé depuis longtemps:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pi="urn:com.workday/picof"
version="2.0">
<xsl:output omit-xml-declaration="yes" method="xml"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- 0... 123456 -->
<xsl:template match="pi:Employee_ID">
<pi:Employee_ID>
<xsl:value-of select="substring(.,3)"/>
</pi:Employee_ID>
</xsl:template>
<xsl:template match="pi:Supervisor_ID">
<pi:Supervisor_ID>
<xsl:value-of select="substring(.,3)"/>
</pi:Supervisor_ID>
</xsl:template>
<xsl:template match="pi:Supervisor_Name">
<pi:Supervisor_Name>
<xsl:value-of select="normalize-space(substring-before(.,'('))"/>
</pi:Supervisor_Name>
</xsl:template>
<xsl:template match="pi:Organization_One">
<pi:Organization_One>
<xsl:value-of select="if(contains(.,'_'))
then(normalize-space(substring-after(.,'_')))
else(.)"/>
</pi:Organization_One>
</xsl:template>
</xsl:stylesheet>
Demandez ici est que/pi: Position/pi: valeur Compensation_Effective_Date devrait également être passé sous/pi: Earnings_Deductions/pi: balise Start_Date
pi: Start_Date doit avoir la même valeur que pi: Compensation_Effective_Date.
Je modifié le XSLT pour inclure deux autres template match un pour pi: Compensation_Effective_Date et l'autre pour/pi: start_date comme indiqué ci-dessous:
<xsl:template match="/pi:Compensation_Effective_Date">
<xsl:param name="test"/>
<xsl:apply-templates>
<xsl:with-param name="test" select="."/>
</xsl:apply-templates>
<pi:Compensation_Effective_Date><xsl:value-of select="$test"/></pi:Compensation_Effective_Date>
</xsl:template>
<xsl:template match="pi:Start_Date">
<xsl:param name="test"/>
<pi:Start_Date><xsl:value-of select="$test"/></pi:Start_Date>
</xsl:template>
avait une valeur param dans pi: modèle compensation_effective_date et passé ce param à pi: modèle start_date. Mais le pi: Start_Date est toujours vide; Comment puis-je obtenir la valeur de compensation_effective_Date dans start_date?
Résultats escomptés:
<pi:Position>
<pi:Business_Title>...</pi:Business_Title>
<pi:Worker_Type>..</pi:Worker_Type>
<pi:Position_Time_Type>..</pi:Position_Time_Type>
<pi:Compensation_Effective_Date>2017-07-01</pi:Compensation_Effective_Date>
<pi:Base_Pay_Currency>..</pi:Base_Pay_Currency>
<pi:Base_Pay_Frequency>...</pi:Base_Pay_Frequency>
<pi:Organization_One>....</pi:Organization_One>
<pi:Organization_Two>....</pi:Organization_Two>
<pi:Supervisor_ID>....</pi:Supervisor_ID>
<pi:Supervisor_Name>.....</pi:Supervisor_Name>
</pi:Position>
<pi:Earnings>
<pi:Start_Date>2017-07-01</pi:Start_Date>
<pi:Currency>...</pi:Currency>
</pi:Earnings>
Je vous suggère de réduire l'exemple au minimum requis pour démontrer le problème - voir: [mcve]. –