gpt4 book ai didi

html - 如何使用 XSLT 编辑 XML 文件中的元素?

转载 作者:行者123 更新时间:2023-12-05 05:33:57 26 4
gpt4 key购买 nike

我这里有一个 XML 文件:

<?xml version="1.0" encoding="utf-16"?>
<class>
<student>
<name>Ben</name>
<age>1</age>
<ages>4</ages>
<entryprofile></entryprofile>
<node>1</node>
</student>
<student>
<name>Steve</name>
<age>2</age>
<ages>3</ages>
<entryprofile></entryprofile>
<node>1</node>
</student>
</class>

我正在尝试提升 entryprofile 元素,使其成为 student 的子元素,而不是 student 的属性 --我希望它包含 node。为此,我尝试应用以下 XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="student">
<xsl:copy-of select="name"/>
<new-level>
<xsl:copy-of select="entryprofile"/>
</new-level>
</xsl:template>
</xsl:stylesheet>

除此之外,这似乎没什么用:

<?xml version="1.0" encoding="utf-16"?>
<name>Ben</name><new-level><entryprofile>g</entryprofile></new-level>
<name>Steve</name><new-level><entryprofile>g</entryprofile></new-level>

但我正在寻找的是:

<?xml version="1.0" encoding="utf-16"?>
<class>
<student>
<name>Ben</name>
<age>1</age>
<ages>4</ages>
<entryprofile>
<node>1</node>
</entryprofile>
</student>
<student>
<name>Steve</name>
<age>2</age>
<ages>3</ages>
<entryprofile>
<node>1</node>
</entryprofile>
</student>
</class>

你可以在那里看到 both stdudents 的 entryprofile 已成为 child ,因为 node 成为entryprofile 的 child 。

谁知道我哪里出错了,我该怎么做才能达到我想要的结果?非常感谢。

最佳答案

此 XSLT 将产生所需的结果:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

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

<xsl:template match="entryprofile">
<xsl:copy>
<xsl:copy-of select="../node"/>
</xsl:copy>
</xsl:template>

<xsl:template match="node"/>
</xsl:stylesheet>

关于html - 如何使用 XSLT 编辑 XML 文件中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73709748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com