如何从xsl读取文本,每个文本应放在每个标记中

时间:2014-10-08 11:12:31

标签: xslt-1.0

源文件包含

<p>TEST</p>

将XSLT应用于输入文件所需的输出:

<p>T</p>
<p>E</p>
<p>S</p>
<p>T</p>

有可能吗?

1 个答案:

答案 0 :(得分:2)

你可以在XSLT中尝试递归:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <root>
    <xsl:call-template name="for-each-character">
      <xsl:with-param name="data" select="p/text()"/>
    </xsl:call-template>
    </root>
  </xsl:template>
  <xsl:template name="for-each-character">
    <xsl:param name="data"/>
    <xsl:if test="string-length($data) &gt; 0">
      <p>
        <xsl:value-of select="substring($data,1,1)"/>
      </p>
      <xsl:call-template name="for-each-character">
        <xsl:with-param name="data" select="substring($data,2,string-length($data))"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

希望这有帮助。