xml - 使用 XML XSLT,如何更新 XML 中的特定数据?
问题描述
考虑下面的例子。我必须更改 setData 中的属性值
<system>
<Groups>
<Group id="01" check="true">
<name>Value</name>
<age>test</age>
<setData>
<data type="module">module</data>
<data enabled="true">true</data>
</setData>
</Group>
<Group id="02" check="true">
<name>Value</name>
<age>test</age>
<setData>
<data type="module">module</data>
<data enabled="true">true</data>
</setData>
</Group>
</Groups>
</system>
我必须在 id="01" 的组中将“启用”属性值更新为“false”
所以预期的输出是
<Group id="01" check="true">
<name>Value</name>
<age>test</age>
<setData>
<data type="module">module</data>
<data enabled="false">false</data>
</setData>
</Group>
下面给出的是我使用的 XL 样式表。有人可以帮忙吗?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:param name="groupId" />
<xsl:param name="isEnabledStatus" />
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="setData" >
<xsl:call-template name="identity" />
<xsl:if test="@data = enabled">
<plan id="{$groupId}">
<xsl:attribute name="enabled"><xsl:value-of select="$isEnabledStatus"/></xsl:attribute>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
解决方案
对于您的口头描述,我会简单地使用
<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="Group[@id = '01']/setData/data[@enabled = 'true']">
<data enabled="false">false</data>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/bdxtqi
如果您还需要显示的参数,则需要说明您需要它们的用途以及要将它们设置为哪些值。
推荐阅读
- sql - 实体框架 6 - 左连接 - 防止在连接子句条件中添加空检查
- laravel - 在 Laravel Auth 中自定义重定向
- python - Mojave 上的 pyenv 在安装 3.5.6、3.6.7 时抛出未声明的标识符“CLOCK_REALTIME”和其他错误
- c# - 如何通过在 C# 中为实例赋值来设置类中的属性
- flutter - Flutter 布局障碍
- angular - 当 api 响应有数据并且我已经订阅时,数据没有显示在屏幕上,Angular 6
- javascript - Javascript 单击网页中的特定按钮
- c - c编程,创建存储指针的动态数组,struc
- excel - 出现运行时错误 6:在非常简单的 Excel VBA 代码中溢出(Mac)
- java - android上的Bitcoinj库挂在安装APK上