这是我的XML:
<LIGHT_DESCRIPTION>
<LIGHT_CHARACTERISTICS>Q+LFl</LIGHT_CHARACTERISTICS>
<LIGHT_SIGNAL_GROUP>(6)(1)</LIGHT_SIGNAL_GROUP>
</LIGHT_DESCRIPTION>
对于我来说,必须按字符划分&#39; +&#39; :
在Q处引用- &gt; (6)
提到LF1处的- &gt; (1)
这是使用XSLT 1.0的输出:
Q (6) - LF1 (1)
答案 0 :(得分:2)
以这种方式试试吗?
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/LIGHT_DESCRIPTION">
<xsl:call-template name="tokenize">
<xsl:with-param name="names" select="LIGHT_CHARACTERISTICS"/>
<xsl:with-param name="values" select="LIGHT_SIGNAL_GROUP"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="names"/>
<xsl:param name="values"/>
<xsl:choose>
<xsl:when test="contains($names, '+')">
<xsl:value-of select="substring-before($names, '+')"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring-before($values, ')')"/>
<xsl:text>) - </xsl:text>
<!-- recursive call -->
<xsl:call-template name="tokenize">
<xsl:with-param name="names" select="substring-after($names, '+')"/>
<xsl:with-param name="values" select="substring-after($values, ')')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($names, ' ', $values)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
注意:恕我直言,你正在为另一个坏格式交换一个坏格式。您为什么不借此机会以已建立的格式生成输出,例如.csv?