我有以下标记。
<para><span class="bidi"/><span class="ind"/>1</para>
我正在努力实现这一目标......
<para><span style="direction:rtl; text-indent:10pt;">1</span></para>
但是,我得到了这个......
<para><span style="direction:rtl">1</span><span style="text-indent:10pt">1</span></para>
这是我的XSLT。
<xsl:template match="span" name="spans">
<span>
<xsl:attribute name="style">
<xsl:choose>
<xsl:when test="@class eq 'bidi'">
<xsl:text>direction:rtl</xsl:text>
</xsl:when>
<xsl:when test="@class eq 'ind'">
<xsl:text>text-indent:10pt;</xsl:text>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:attribute>
<xsl:apply-templates/>
</span>
</xsl:template>
如何将多个跨度与所有类属性值合并为1?
答案 0 :(得分:1)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="para[span]">
<para>
<span>
<xsl:attribute name="style">
<xsl:apply-templates select="span"/>
</xsl:attribute>
<xsl:apply-templates select="node()[not(self::span)]"/>
</span>
</para>
</xsl:template>
<xsl:template match="span[@class='bidi']">
<xsl:if test="position() >1"><xsl:text> </xsl:text></xsl:if>
<xsl:text>direction:rtl;</xsl:text>
</xsl:template>
<xsl:template match="span[@class='ind']">
<xsl:if test="position() >1"><xsl:text> </xsl:text></xsl:if>
<xsl:text>text-indent:10pt;</xsl:text>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<para><span class="bidi"/><span class="ind"/>1</para>
会产生想要的正确结果:
<para><span style="direction:rtl; text-indent:10pt;">1</span></para>