Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 无法创建标识模板和属性节点_Xml_Templates_Xslt_Identity - Fatal编程技术网

Xml 无法创建标识模板和属性节点

Xml 无法创建标识模板和属性节点,xml,templates,xslt,identity,Xml,Templates,Xslt,Identity,我在XSLT中使用标识模板,通常它工作得很好。对于我正在获取的当前批文件 “无法在包含元素的子元素之后创建属性节点(类)” 如果我正确理解了这个错误消息,它会告诉我,我正试图在一个元素上添加一个属性,但“游标”已移动到子元素。。。 我如何防止这种情况 这是模板: <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> 在我发布这篇文章之后,我在另一个类似的问题中发现了一个

我在XSLT中使用标识模板,通常它工作得很好。对于我正在获取的当前批文件 “无法在包含元素的子元素之后创建属性节点(类)”

如果我正确理解了这个错误消息,它会告诉我,我正试图在一个元素上添加一个属性,但“游标”已移动到子元素。。。 我如何防止这种情况

这是模板:

<xsl:copy>
    <xsl:apply-templates select="@*|node()" />
</xsl:copy>

在我发布这篇文章之后,我在另一个类似的问题中发现了一个建议。这是在一行的东西:创建一个匹配的@* 所以我补充说:

<xsl:template match="@*">
    <!-- don't do a thing -->
</xsl:template>


错误信息消失了,一切正常

请给我们一个最小但完整的样本,让我们重现问题。到目前为止,您还没有显示完整的模板。如果您有处理元素和创建属性的模板规则,则通常会出现问题。任何创建属性而不创建包含元素的模板规则都可能是可疑的。(我并不是说它错了,只是说它是这个错误的潜在来源。)但是我们不能在没有看到它的情况下调试您的代码。您的“解决方案”的问题是它会删除源XML中的所有属性,使其不出现在输出中。如果这是期望的结果,那么可以更简单地通过不将任何模板应用于属性来实现,包括身份转换模板。如果不是,则表示您已成功抑制了错误消息,但损害了输出。的可能重复