gpt4 book ai didi

xml - 通过 xslt 更改 XML 属性的值

转载 作者:行者123 更新时间:2023-12-02 17:23:46 25 4
gpt4 key购买 nike

我有以下 xml 文件:

<Book description="for beginners" name="IT Book">
<Available>yes</Available>
<Info pages="500.</Info>
</Book>

我希望它看起来像这样:

<Book description="for pros" name="IT Book">
<Available>yes</Available>
<Info pages="500.</Info>
</Book>

我在网上查找了如何正确修改 xml 文档。我发现首先我应该声明一个模板来复制所有内容:

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

但是实际修改的模板我不知道怎么写。感谢您帮助初学者。

编辑:这是我到目前为止的样式表(根据 uL1 的要求):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sig="http://www.w3.org/2000/09/xmldsig#">
<xsl:output indent="yes" method="xml" omit-xml-declaration="yes"/>

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

<xsl:template match="@description='for beginners'">
<xsl:attribute name="{name()}">
<xsl:text>for pros</xsl:text>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>

最佳答案

这个问题已经在许多其他线程中得到了回答。例如。 XSLT: How to change an attribute value during <xsl:copy>?

在您的情况下,除了身份复制模板之外,您还需要一个与您的属性 description 匹配的模板。

<xsl:template match="@description"> <!-- @ matches on attributes, possible to restrict! -->
<xsl:attribute name="{name()}"> <!-- creates a new attribute with the same name -->
<xsl:text>for pros</xsl:text> <!-- variable statement to get your desired value -->
</xsl:attribute>
</xsl:template>

EDIT 1(错误原因的更多信息)

一个完整的、有效的、可运行的脚本是:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

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

<xsl:template match="@description[. = 'for beginners']">
<xsl:attribute name="{name()}">
<xsl:text>for pros</xsl:text>
</xsl:attribute>
</xsl:template>

</xsl:stylesheet>

关于xml - 通过 xslt 更改 XML 属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485061/

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