Xml 生成特定ID';XSLT中的s
我好像有点被自动取款机卡住了。我正在尝试生成新的ID,但它没有按我希望的方式计算。 我有以下xml文件:Xml 生成特定ID';XSLT中的s,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我好像有点被自动取款机卡住了。我正在尝试生成新的ID,但它没有按我希望的方式计算。 我有以下xml文件: <componentcontent> <explanation> <include filename="ha-c41-ep1.xml"/> <exercises> <include filename="ha-c41-ot1.xml"/>
<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:filename=“1-u1”、filename=“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>
Geen包含元素gevonden voor文件met naam。
这给了我以下输出:
<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
1.
2.
那么:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="explanation/include/@filename">
<xsl:attribute name="filename">
<xsl:text>1-u</xsl:text>
<xsl:number count="explanation/include" level="any"/>
<xsl:text>.xml</xsl:text>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
1-u
.xml