XSLT / XPath:将<tag>视为普通字符串,而不是节点

时间:2017-05-25 23:43:21

标签: xslt xpath

我有一个XML:

<foo>
    <bar>some text</bar>
</foo>

我正在使用XSTL从它生成一个HTML,并寻找一个Xpath(或一些XSTL方法,不知道),它给了我foo的全部内容。为了说明我的问题,

<xsl:value-of select="foo"/>

正如所料,仅提供

some text

。但是我能做些什么来获得

<bar>some text</bar>

?所以要把它看作是条形标签只是普通的字符串。

2 个答案:

答案 0 :(得分:2)

嗯,当然没有办法将<tag>视为一个字符串,因为XSLT会看到XML解析器的输出,这是一个节点树:标签很久以来就已经消失了,当时XSLT正在变为行动

但是你可以将元素节点作为一个整体复制,而不是仅仅提取它的字符串值。只需使用<xsl:copy-of>代替<xsl:value-of>

答案 1 :(得分:1)

您可以使用Copy

<强> HTML

<foo>
    <bar>some text</bar>
</foo>

<强> XSL

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>
  <xsl:template match="bar">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

<强>输出

<bar>some text</bar>