-2

我有一个问题,当我尝试从带有 xslt 转换的 xml 中获取 html 时,包含 html 的 xml 部分是:

`<DataContent><media media-type="image" style="leftSide"><media-reference data-location="#photo0" mime-type=""/></media><p>p1</p><p>p2</p><p>p3</p></DataContent>
</ContentItem>`

但在 html 页面中,结果是:

p1p2p3 //只有文本,

我的 xslt 代码是:

<xslt:valueof select="ContentItem/DataContent"/>

谁能帮我?

4

1 回答 1

1

我知道你在找什么。本着帮助的精神,下面是一个解决方案和一些解释。我强烈建议您阅读一本关于 XSLT 的好书并从头开始学习基础知识。


当这个 XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:strip-space elements="*"/>

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

  <xsl:template match="ContentItem">
    <xsl:apply-templates select="DataContent/*"/>
  </xsl:template>

</xsl:stylesheet>

...应用于原始 XML(更正为格式正确):

<ContentItem>
  <DataContent>
    <media media-type="image" style="leftSide">
      <media-reference data-location="#photo0" mime-type=""/>
    </media>
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
  </DataContent>
</ContentItem>

...想要的结果是(我认为)产生:

<media media-type="image" style="leftSide">
  <media-reference data-location="#photo0" mime-type=""/>
</media>
<p>p1</p>
<p>p2</p>
<p>p3</p>

您的解决方案正在输出文本<xsl:value-of>,因为根据定义,它返回所选节点/属性的字符串值。

于 2013-09-09T18:08:13.493 回答