xml - 如何更改其中一个属性的值?
问题描述
我有一个源 xml 文档:
<A>
<B VALUE = "1"/>
<B VALUE = "1"/>
</A>
使用什么 XSLT 转换将上述 XML 文档转换为:
<A>
<B VALUE = "1"/>
<B VALUE = "2"/>
</A>
解决方案
我将假设在想要的输出中,VALUE
属性的值应该是其父元素在序列中的位置/A/B
然后这个转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="B/@VALUE[not(. = count(../preceding-sibling::B) +1 )]">
<xsl:attribute name="VALUE">
<xsl:value-of select="count(../preceding-sibling::B) + 1"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
应用于提供的 XML 文档时:
<A>
<B VALUE = "1"/>
<B VALUE = "1"/>
</A>
产生想要的结果:
<A>
<B VALUE="1"/>
<B VALUE="2"/>
</A>
推荐阅读
- node.js - 如何检查变量是否为 Firestore 文档数据类型?
- php - 打开 http://example.com/myphpadmin 时出错 - HTTP ERROR 500
- sqlite - 蟒蛇 | 图形 | float() 参数必须是字符串或数字,而不是 'builtin_function_or_method'
- azure - Power Platform CD 的 Azure Devops 路径
- java - 在扩展多个接口的类中声明字段
- php - Composer 找不到 PHPUnit 类错误
- vb.net - 如何在第一个进程的第二个进程中设置变量
- angular - Datepicker 两种方式绑定在角度 10 中不起作用
- python - 如何重新加载使用应用程序工厂和 flask_assets 的 Flask 应用程序
- python - AttributeError:找不到格式 - pyodide + joblib.dump + scikit-learn (TfidfVectorizer)