XSLT - 添加分析text()节点的新节点

时间:2015-08-31 09:00:42

标签: xml xslt xslt-2.0

我有一个xml如下,

<doc>
  <chap>&lt;The root&gt;
     &lt;element that&gt;
     &lt;declares&gt;
     &lt;the document to be an XSL style sheet&gt;</chap>
</doc>

我需要编写xsl,将名为<p>的单独节点添加到&lt;&gt;<chap>之间存在的文本。

所以输出应该是,

<doc>
  <p>&lt;The root&gt;</p>
  <p>&lt;element that&gt;</p>
  <p>&lt;declares&gt;</p>
  <p>&lt;the document to be an XSL style sheet&gt;</p>
</doc>

我可以在<chap>节点内的文本中编写模板,例如,<xsl:template match="chap/text()",但我想不出通过分析{{<p>中的text()节点来添加新<chap>的方法。 1}}

有任何建议我该怎么做?

2 个答案:

答案 0 :(得分:1)

要执行此操作,您可以使用analyze-string元素来获取与正则表达式匹配的文本

<xsl:analyze-string select="." regex="&lt;(.*)&gt;">

要输出括号匹配的文本,请使用regex-group

<xsl:value-of select="regex-group(1)" />

试试这个XSLT模板

<xsl:template match="chap">
    <xsl:analyze-string select="." regex="&lt;(.*)&gt;">
      <xsl:matching-substring>
        <p><xsl:value-of select="regex-group(1)" /></p>
      </xsl:matching-substring>
      <xsl:non-matching-substring>
        <xsl:value-of select="." />
      </xsl:non-matching-substring>
    </xsl:analyze-string>
</xsl:template>

http://www.xml.com/pub/a/2003/06/04/tr.html

上阅读正则表达式匹配

答案 1 :(得分:1)

检查

swift -version