2016-06-28 11 views
0

Ich bin neu in XSLT.
Ich habe eine Quelle XSLT wie die unten.Erstellen von Elementen basierend auf Werten in XSLT

<?xml version="1.0" encoding="UTF-8"?> 
    <root> 
     <child-value>3</child-value> 
    </root> 

Mein Ziel sollte unter einem

<?xml version="1.0" encoding="UTF-8"?> 
<pass_details> 
    <pass id ='p1'>1</pass> 
    <pass id ='p2'>2</pass> 
    <pass id ='p3'>3</pass> 
</pass_details> 

Die Anzahl der <pass> Tag so etwas wie das sollte auf dem Wert von child-value Tag basieren? Kann jemand mit dem xslt helfen?

+0

Wo befindet sich diese im Zusammenhang mit [tag: xquery], nachdem alle? Bitte beschränken Sie sich auf _relevante_ Tags. –

Antwort

4

Wenn Sie auf XSLT 1.0 beschränkt sind, werden Sie eine rekursive Template aufrufen müssen, um die pass Elemente zu erzeugen:

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

<xsl:template match="/root"> 
    <pass_details> 
     <xsl:call-template name="gen"> 
      <xsl:with-param name="n" select="child-value"/> 
     </xsl:call-template> 
    </pass_details> 
</xsl:template> 

<xsl:template name="gen"> 
    <xsl:param name="n"/> 
    <xsl:if test="$n > 0"> 
     <xsl:call-template name="gen"> 
      <xsl:with-param name="n" select="$n - 1"/> 
     </xsl:call-template> 
     <pass id="p{$n}"> 
      <xsl:value-of select="$n"/> 
     </pass> 
    </xsl:if> 
</xsl:template> 

</xsl:stylesheet> 
+0

Danke @ michael.hor257k. dieses wrks. Noch ein Zweifel, Gibt es eine Möglichkeit, das Datum, das Zeichenfolge in xsd ist, zu konvertieren: date sourceXML: 2016-07-08T02: 05: 58.058Z targetXML muss 2016-07-08 + 05: 58 haben. In der Quelle ist es ein String, wobei das Ziel dies als xsd: date erwartet. irgendwelche Vorschläge. –

+0

Ich bin mir sicher, dass es - aber bitte posten Sie dies als eine neue Frage. –

+0

Ich habe Zweifel an der Ausführung der obigen xsl. Wie erfolgt das Executon für das ' 'ob Vorlage wird zuerst aufgerufen oder das pass-Tag wird ausgeführt, dann wird das Template aufgerufen. schlagen Sie irgendein Tutorial für xslt vor. Danke –

Verwandte Themen