0
我似乎被卡住了。我正在嘗試生成新的ID,但它不會計算我希望它計數的方式。 我有以下XML文件:在XSLT中生成特定的ID
<componentcontent>
<explanation>
<include filename="ha-c41-ep1.xml"/>
<exercises>
<include filename="ha-c41-ot1.xml"/>
<include filename="ha-c41-ot2.xml"/>
</exercises>
</explanation>
<explanation>
<include filename="ha-c41-u1.xml"/>
<exercises>
<include filename="ha-c41-u11.xml"/>
<include filename="ha-c41-ex-4.xml"/>
</exercises>
</explanation>
</componentcontent>
我想說明文件(不是運動)有以下的ID:文件名= 「1-U1」,文件名= 「1-U2」 等
目前我使用以下XSLT:
<xsl:template match="componentcontent/explanation/include">
<xsl:copy>
<xsl:attribute name="local:_file" select="local:new-paragraph-filename(., 'u')"/>
<xsl:apply-templates select="node() | @*" />
<xsl:number count="explanation/include" level="any"/>
</xsl:copy>
</xsl:template>
<xsl:template match="c:file[exercise[@type eq 'explanation']]">
<xsl:variable name="include" as="element(include)?" select="key('includes', @name)"/>
<xsl:if test="not($include)">
<xsl:message terminate="yes">Geen include-element gevonden voor file met naam <xsl:value-of select="@name"/>.</xsl:message>
</xsl:if>
<xsl:copy>
<xsl:attribute name="name" select="local:new-paragraph-filename(key('includes', @name), 'u')"/>
<xsl:apply-templates select="node() | @* except @name"/>
</xsl:copy>
</xsl:template>
這給了我下面的輸出:
<componentcontent>
<explanation>
<include filename="1-u1.xml">1</include>
<exercises>
<include filename="ha-c41-ot1.xml"/>
<include filename="ha-c41-ot2.xml"/>
</exercises>
</explanation>
<explanation>
<include filename="1-u1.xml">2</include>
<exercises>
<include filename="ha-c41-u11.xml"/>
<include filename="ha-c41-ex-4.xml"/>
</exercises>
</explanation>
</componentcontent
我的問題是,有人可以指向正確的方向,因爲數字不是我想要的方式嗎?
親切的問候
解決它了。感謝您的輸入! – ASB