如何使用XSLT获取XML元素中的所有内容

时间:2013-04-04 18:47:37

标签: html xml xslt xpath

我正在尝试让XSLT转换为像

这样的东西
<foo>
    lorem ipsum
    <br />
    some more lorem ipsum
</foo>

进入

<p>
    lorem ipsum
    <br />
    some more lorem ipsum
</p>

我为

的select属性尝试过无数路径
<p><xsl:value-of select="/foo/*" /></p>

但他们似乎都没有工作。是否有可能将元素的所有子元素都作为纯文本?

2 个答案:

答案 0 :(得分:3)

您可以使用xsl:copy-of

<p><xsl:copy-of select="/foo/node()" /></p>

但更好的方法是在XSLT中添加一个身份模板:

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()" />
  </xsl:copy>
</xsl:template>

然后利用它:

<p><xsl:apply-templates select="/foo/node()" /></p>

答案 1 :(得分:0)

如果以下内容适合您,请与我们联系:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">  
  <xsl:for-each select="item/foo">
    <p>
      <xsl:value-of select="current()"/>
    </p>    
  </xsl:for-each> 
</xsl:template>
</xsl:stylesheet>

使用此XML进行测试:

<?xml version="1.0" encoding="ISO-8859-1"?>
<item>
<foo>
    lorem ipsum
    <br />
    some more lorem ipsum
</foo>
<foo>
    lorem ipsum
    <br />
    some more lorem ipsum
</foo>
</item>