再会 -
在 ColdFusion 9 中,我们可以将 XML 参数传递给 xmlTransform(),如下所示:
<cfxml variable="parm">
<users>
<user>Joe Blow</user>
<user>Jane Doe</user>
</users>
</cfxml>
<cfset params=structNew()>
<cfset params["users"]=parm>
<cfset newXML=xmlTransform(xmlFile,xslFile,params)>
那么在 XSL 中,我们可以接受“users”参数:
<xsl:param name="users" select="." />
并将其用作变量,在其上运行 XPath,等等。
但是,对于 ColdFusion 10,将 XML 参数传递给任何 XSL 都会导致错误。这是非常无用的,并且没有任何错误日志显示任何细节。
显示的错误很简单:
An error occured while Transforming an XML document.
和
Coldfusion.xml.XmlProcessException:转换 XML 文档时发生错误。在coldfusion.xml.XmlProcessor.doTransform(XmlProcessor.java:508) 在coldfusion.xml.XmlProcessor.access$100(XmlProcessor.java:82) 在coldfusion.xml.XmlProcessor$3.run(XmlProcessor.java:455) 在java。安全.AccessController.doPrivileged(Native Method) 在coldfusion.xml.XmlProcessor.transform(XmlProcessor.java:451) 在coldfusion.xml.XmlProcessor.transform(XmlProcessor.java:440) 在coldfusion.runtime.CFPage.XmlTransform(CFPage. java:359) 在 cftestxml2ecfm41929416.runPage(E:\test\testxml.cfm:36) 在 Coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244) 在 Coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java: 444) 在coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) 在coldfusion.filter.IpFilter.invoke(IpFilter.java:64) 在coldfusion.filter。
我已将其范围缩小到专门将 XML 作为参数传递的操作。如果将其更改为字符串而不是 XML,则它“有效”,因为它不会收到此错误。这对于一个空的 XSLT 来说很好,但是我们当然需要将它作为 XML 传递,以便我们可以例如对数据使用 XPath。
ColdFusion 10 是否已更改为不再允许将 XML 参数传递给 xmlTransform()?任何帮助是极大的赞赏。