我已经编写了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输出提供标签和数据。
答案 0 :(得分:1)
您的XSLT正常并产生正确的输出。问题是,如果您尝试在浏览器中显示结果,它将不会显示标记,只会显示文本内容。当您在w3schools.com上试用时,这正是发生了什么:
XSLT Result http://i57.tinypic.com/1ihg95.png
w3schools测试程序旨在将XSLT的结果显示为HTML,因此即使它正确转换(如我的屏幕截图中的FireBug所示),也只会在页面中呈现文本内容。