我在XSL中有2個模板,我想在單個XSL文件中執行。 原始的XMLXSLT 1.0在另一個模板的結果上應用模板
<root>
<step1.alfa/>
<step1.bravo/>
<step1.charlie/>
<step1.delta/>
<step2.alfa/>
<step2.bravo/>
<step2.charlie/>
<step2.delta/>
這需要嵌套,然後重命名的元素名稱。 但我無法弄清楚如何在1個單獨的xslt中完成這2個模板。由於模板始終從原始的xml開始。
首先輸出
<root>
<step>
<step1.alfa/>
<step1.bravo/>
<step1.charlie/>
<step1.delta/>
</step>
<step>
<step2.alfa/>
<step2.bravo/>
<step2.charlie/>
<step2.delta/>
</step>
第二輸出
<root>
<step>
<alfa/>
<bravo/>
<charlie/>
<delta/>
</step>
<step>
<alfa/>
<bravo/>
<charlie/>
<delta/>
</step>
第一模板是嵌套的步驟和第二個是重命名。我只顯示一個,但我有一個需要重新命名的每個元素的模板。
<xsl:template match="Values" name="recursive-steps">
<xsl:param name="var" select="2"/>
<xsl:choose>
<xsl:when test="$var > 0">
<STEP>
<xsl:for-each select="node()[starts-with(name(), concat('step', $var))]">
<xsl:copy-of select="."/>
</xsl:for-each>
</STEP>
<xsl:call-template name="recursive-steps">
<xsl:with-param name="var" select="$var - 1"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:template>
<xsl:template match="*[substring(name(), string-length(name())-3) = 'alfa']">
<ALFA>
<xsl:apply-templates select="@*|node()" />
</ALFA>
</xsl:template>
在這裏添加了我想合併的2個模板。
爲什麼你不讓我們更容易,併發布你有兩個模板。特別是因爲不清楚可以有多少步驟。 –
@ michael.hor257k添加了它們,底部有兩個我想合併的模板。目前我正在嘗試使用xsl,如果在第一個模板的循環中。 –