Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/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
在现有节点中使用XSLT插入XML元素_Xslt - Fatal编程技术网

在现有节点中使用XSLT插入XML元素

在现有节点中使用XSLT插入XML元素,xslt,Xslt,我有以下XML文档: 现在,我想使用XSLT添加一个标记,以便文档如下所示: 正文 如果我再次重复使用XSLT,它应该只添加另一项: 正文 正文 听起来很容易,不是吗?以下是我尝试了很多东西后得到的最好的: 它完成了/几乎完成了/我所要求的,只是它“忘记”了根元素的属性。我在stackoverflow和其他地方发现了许多其他解决方案,它们与我的解决方案有共同之处,即它们失去了根元素的属性。如何修复此问题?您当前只转换子节点,而不是属性 <xsl:template match

我有以下XML文档:


现在,我想使用XSLT添加一个标记,以便文档如下所示:


正文
如果我再次重复使用XSLT,它应该只添加另一项:


正文
正文
听起来很容易,不是吗?以下是我尝试了很多东西后得到的最好的:



它完成了/几乎完成了/我所要求的,只是它“忘记”了根元素的属性。我在stackoverflow和其他地方发现了许多其他解决方案,它们与我的解决方案有共同之处,即它们失去了根元素的属性。如何修复此问题?

您当前只转换子节点,而不是属性

<xsl:template match="root">
    <xsl:copy>
        <xsl:copy-of select="node()|@*"/> <!-- now does attrs too -->
        <item>
            <xsl:value-of select="$message" />
        </item>
    </xsl:copy>
</xsl:template>