在REST数据摘录器的XSL转换中出现以下错误:
org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
这是XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="PCIresponse">
<dataset>
<xsl:for-each select="account-set/account">
<row>
<xsl:element name="field">
<xsl:attribute name="name">name</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="Account_Name" /></xsl:attribute>
</xsl:element>
</row>
</xsl:for-each>
</dataset>
</xsl:template>
答案 0 :(得分:2)
事实证明,Java XSL处理程序不喜欢生成转换的第一个节点之前的任何空格。
要解决此问题,请先使用自己的顶级模板设置根节点(即节点),然后使用apply-templates。工作版本如下所示:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="account-set">
<xsl:for-each select="account">
<row>
<xsl:element name="field">
<xsl:attribute name="name">name</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="Account_Name" /></xsl:attribute>
</xsl:element>
</row>
</xsl:for-each>
</xsl:template>
<xsl:template match="PCIresponse">
<dataset>
<xsl:apply-templates/>
</dataset>
</xsl:template>
</xsl:stylesheet>
此解决方案的最佳摘要位于:http://servicemix.apache.org/servicemix-saxon-orgw3cdomdomexception-hierarchyrequesterr.html