XSLT:无法使用XSL将Source XML转换为另一个XML

时间:2014-04-08 06:42:41

标签: xml xslt

我已经编写了XSLT并在线测试过。

我在以下网站上测试了它: http://www.freeformatter.com/xsl-transformer.html

它工作正常,我将输出作为XML

我在W3Schools再次对它进行了测试,但它没有转换为XML,只是仅提供第一个XML的标记内容,而且我的MULE代码中也出现了同样的问题。

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

以下是XML:

<Data><DServ><service><SID>A-9000</SID><SITID>A-9000-01-0500</SITID><Parameters><Parameter><name>A</name><params><param><name>B</name><value>false</value></param><param><name>C</name><value>true</value></param><param><name>D</name><value>true</value></param><param><name>E</name><value>localhost</value></param></params></Parameter></Parameters></service></DServ></Data>

以下是XSLT代码:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" encoding="utf-8" indent="no"/><xsl:template match="/"><execution-context xmlns="http://www.jhere.com/vco"><parameters><parameter name="name" type="string"><string><xsl:value-of select="Data/DServ/service/Parameters/Parameter/name" /></string></parameter> <xsl:for-each select="Data/DServ/service/Parameters/Parameter/params/param"><xsl:variable name="man"><xsl:value-of select="name" /></xsl:variable><xsl:if test="contains($man,'B')"> <parameter name="B" type="boolean"><boolean><xsl:value-of select="value" /></boolean></parameter></xsl:if></xsl:for-each><xsl:for-each select="Data/DServ/service/Parameters/Parameter/params/param"><xsl:variable name="man"><xsl:value-of select="name" /></xsl:variable><xsl:if test="contains($man,'C')"><parameter name="C" type="boolean"> <boolean><xsl:value-of select="value" /></boolean></parameter></xsl:if></xsl:for-each><xsl:for-each select="Data/DServ/service/Parameters/Parameter/params/param"><xsl:variable name="man"><xsl:value-of select="name" /></xsl:variable><xsl:if test="contains($man,'D')"><parameter name="D" type="boolean"><boolean><xsl:value-of select="value" /></boolean></parameter></xsl:if></xsl:for-each></parameters></execution-context></xsl:template></xsl:stylesheet>   `

错误输出:

Afalsetruetrue

它只是给予价值而不是XML标签?有人能找出原因吗?

在某些网站中,它可以完美地为XML输出提供标签和数据。

1 个答案:

答案 0 :(得分:1)

您的XSLT正常并产生正确的输出。问题是,如果您尝试在浏览器中显示结果,它将不会显示标记,只会显示文本内容。当您在w3schools.com上试用时,这正是发生了什么:

XSLT Result http://i57.tinypic.com/1ihg95.png

w3schools测试程序旨在将XSLT的结果显示为HTML,因此即使它正确转换(如我的屏幕截图中的FireBug所示),也只会在页面中呈现文本内容。