gpt4 book ai didi

xml - 重命名 XML 元素并用 XSLT 分隔逗号

转载 作者:行者123 更新时间:2023-12-02 11:48:43 25 4
gpt4 key购买 nike

我想要做的是将iavmNotice/title重命名为iavmNotice/iavmTitle:
这是我的 XML:

<iavmNotice xmlns="http://stuff.com" noticeId="138643">
<title>Cisco Vulnerability</title>
<techOverview>
<entry>
<title>2012-2490</title>
<description>Cisco ID 71.</description>
</entry>
<entry>
<title>2012-2525</title>
<description>Cisco ID 69.</description>
</entry>
</techOverview>
</iavmNotice>

这是我的尝试:

<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="iavmNotice/title">
<iavmTitle>
<xsl:apply-templates select="@* | node()"/>
</iavmTitle>
</xsl:template>
<xsl:template match="@iavmNotice/title">
<xsl:attribute name="iavmTitle">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>

另外,有没有办法以逗号分隔导入 techOverview/entry/title ?将其导入为 2012-2490、2012-2525 并删除说明。

最佳答案

XML 文档的 iavmNotice 根元素上的 xmlns="http://stuff.com" 声明将整个文档放入 http://stuff.com 命名空间。

因此,您要么需要让样式表了解该 namespace ,要么在匹配中仅使用 local-name():

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'iavmNotice']/*[local-name() = 'title']">
<iavmTitle>
<xsl:apply-templates select="@* | node()"/>
</iavmTitle>
</xsl:template>
</xsl:stylesheet>

关于xml - 重命名 XML 元素并用 XSLT 分隔逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036085/

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