我的输入xml就像,
<section level="2">
<title>1. Wound Healing<target id="c001"/><target id="page3"/></title>
<figure id="c001_f001" counter="yes">
<legend><para><emph type="bold">Fig. 1-1</emph> Hypertrophic scar.</para></legend>
<subfigure>
<graphic position="center" fileref="images/9781626237896_c001_f001.jpg"/>
</subfigure>
</figure>
<figure counter="yes">
<legend><para><emph type="bold">Fig. 1-2</emph> Keloid scar.</para></legend>
<subfigure>
<graphic id="c001_f002" position="center" fileref="images/9781626237896_c001_f002.jpg"/>
</subfigure>
</figure>
........
</section>
必需输出为,
<section level="2">
<title>1. Wound Healing<target id="c001"/><target id="page3"/></title>
<figure counter="yes">
<legend><para><emph type="bold">Fig. 1-1</emph> Hypertrophic scar.</para> </legend>
<subfigure id="c001_f001">
<graphic position="center" fileref="images/9781626237896_c001_f001.jpg"/>
</subfigure>
</figure>
<figure counter="yes">
<legend><para><emph type="bold">Fig. 1-2</emph> Keloid scar.</para></legend>
<subfigure id="c001_f002">
<graphic position="center" fileref="images/9781626237896_c001_f002.jpg"/>
</subfigure>
</figure>
........
</section>
我的xslt就像,
<xsl:template match="subfigure">
<xsl:variable name="fig1" select="parent::figure/@id"></xsl:variable>
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:attribute name="id">
<xsl:value-of select="$fig1"></xsl:value-of>
</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
<xsl:when test="subfigure/@id[not(contains(.,'c'))]">
<xsl:if test="subfigure/@id[not(contains(.,'c'))]">
<xsl:variable name="fig1" select="graphic/@id"></xsl:variable>
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:attribute name="id">
<xsl:value-of select="$fig1"></xsl:value-of>
</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
上面提到的XSLT只是将图形ID移动到子图元素中。但我们无法将图形ID移动到子图元素中。 Alos,我们需要删除在“1.”数字后出现在元素中的双空格。你能指导我们吗?
答案 0 :(得分:1)
从您的其他帖子(visit here for more detail)中的解决方案开始,您可以应用相同的方法,反之亦然:
<title>
对于{{1}}内的空格控制,您可以直接在文本节点上工作(如果您还需要在其他元素上执行此操作,则只需展开xpath表达式。)