我有一个问题,当我尝试通过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页面中,retult是:
p1p2p3 //仅文字,
我的xslt代码是:
<xslt:valueof select="ContentItem/DataContent"/>
谁能帮助我吗?
答案 0 :(得分: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>
会返回所选节点/属性的字符串值。