devo duplicare il payload XML in altrettanti payload XML sulla base di uno specifico ID, ad esempio, useridcome duplicare elementi XML
<ns2:Details xmlns:ns2="ns">
<ns2:var1>AA0511201143</ns2:var1>
<ns2:var2>PARCEL</ns2:var2>
<ns2:var3>04/04/2011</ns2:var3>
<ns2:var4>Organization</ns2:var4>
<ns2:UserId>46</ns2:UserId>
<ns2:UserId>237</ns2:UserId>
</ns2:Details>
ho bisogno l'uscita come
<ns2:Details>
<ns2:var1>AA0511201143</ns2:var1>
<ns2:var2>PARCEL</ns2:var2>
<ns2:var3>04/04/2011</ns2:var3>
<ns2:var4>Organization</ns2:var4>
<ns2:UserId>46</ns2:UserId>
</ns2:Details>
<ns2:Details>
<ns2:var1>AA0511201143</ns2:var1>
<ns2:var2>PARCEL</ns2:var2>
<ns2:var3>04/04/2011</ns2:var3>
<ns2:var4>Organization</ns2:var4>
<ns2:UserId>237</ns2:UserId>
</ns2:Details>
è questo possibile
Update: La risposta di seguito che è stato dato è workin Va bene, ma c'è un piccolo problema che non ho menzionato. Se l'ID utente è lo stesso e si sta ripetendo, dovrebbe essere visualizzato lo stesso payload xml. Per questo ho provato quanto segue per ottenere gli elementi unici di userid
<xsl:param name="userId" select="ns0:UserId[generate-id(.)=generate-id(key('k', ns0:UserId)[1])]"/>
ma questo non funziona e anche provato a usare sopra
..[generate-id(.)=generate-id(key('k', ns0:UserId)[1])]
a livello di modello anche non funziona
Am Mi manca qualcosa?
Aggiornamento: ho fatto una piccola modifica al codice precedente, invece di lavorare a xsl: param, ho usato a xsl: applicare-template
prima modifica (fornito come risposta per me) < xsl: apply-templates select = "// ns2: Details/ns2: UserId" /> dopo la modifica < xsl: apply-templates select = "// ns2: Dettagli/ns2: UserId [genera- id (.) = generate-id (chiave ('myUserId',.) [1])] "/>
errore mio stavo usando ns2: userid invece di "."
codice XSL piena ---
<xsl:output method="xml" indent="yes"/> <xsl:key name="k" match="ns2:UserId" use="text()"/> <xsl:key name="myUserId" match="ns2:UserId" use="."/> <xsl:template match="/"> <ns2:Root> <xsl:apply-templates select="//ns2:Details/ns2:UserId[generate-id(.)=generate-id(key('myUserId', .)[1])]"/> </ns2:Root> </xsl:template>
<xsl:template match="//ns2:Details"> <xsl:param name="userId" select="ns2:UserId"/> <ns2:Details> <xsl:copy-of select="key('k', $userId)[1]"/> <!-- displays UserId values--> <xsl:copy-of select="./*[name() != 'ns2:UserId']"/> <!-- displays other values--> </ns2:Details> </xsl:template>
<xsl:template match="ns2:UserId"> <xsl:apply-templates select=".."> <xsl:with-param name="userId" select="."/> </xsl:apply-templates> </xsl:template>
prega, convalidarlo. anche questo funziona per me ...
Your input e output desiderato non sono ben formate. Presumo che ' Organizzazione ns2: businessActionsVariable>' dovrebbe essere ' Organizzazione '? –
Jacqueline
+1 per bella domanda. Non capisco davvero il tuo _update_. Vuoi ripetere 'UserId' per generare altri' Dettagli'? La mia risposta funziona bene per te? –
Ok, vedo, ho aggiornato la mia risposta per rimuovere i duplicati. –