xslt - 仅使用 XSLT 转换更改少量标签
问题描述
我有一条很大的 json 消息,我只想更改一些字段值。其余字段应与输入消息完全相同。如果不对 xslt 中的每个项目进行硬编码,有没有办法只更改选定的项目?
XML 输入负载
<?xml version="1.0" encoding="UTF-8"?>
<root>
<glossary>
<title>example glossary</title>
<GlossDiv>
<GlossList>
<GlossEntry>
<Abbrev>ISO 8879:1986</Abbrev>
<Acronym>SGML</Acronym>
<GlossDef>
<GlossSeeAlso>
<element>GML</element>
<element>XML</element>
</GlossSeeAlso>
<para>A meta-markup language, used to create markup languages such as DocBook.</para>
</GlossDef>
<GlossSee>markup</GlossSee>
<GlossTerm>Standard Generalized Markup Language</GlossTerm>
<ID>SGML</ID>
<SortAs>SGML</SortAs>
</GlossEntry>
</GlossList>
<title>S</title>
</GlossDiv>
</glossary>
</root>
样本有效载荷
{
"glossary": {
**"title": "example glossary",**
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
预期产出
{
"glossary": {
**"title": "New value",**
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
我大胆地改变了领域
解决方案
就 XML 到 XML 而言,这是基本的 XSLT
<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="glossary/title">
<xsl:copy>New Value</xsl:copy>
</xsl:template>
</xsl:stylesheet>
使用身份转换模板以及要转换的元素或属性(或一般节点)的附加模板。
转换为 JSON 是一个不同的问题。
推荐阅读
- excel - Excel VBA“编译错误预期语句结束”(括号问题)
- python - 数据库表中的 wy 未创建并显示此错误 在 Django 中无效的外键
- python - `sklearn` 在有 eval 数据集时询问
- php - Php + mysql - 在 66,946 个字符的查询输入后,连接始终中断
- python - 如何使用 Python 搜索具有给定参数的 JSON 文件?
- graphql - 变异输入在两个 Apollo GraphQL 联合服务之间拆分
- python - 如何使用python计算excel中价格列表的回报率?
- reactjs - 如何使用多个 API 显示表格
- c++ - Why is my code stopping prematurely? what have i done wrong?
- ios - Unable to Return RGB Colors (CGPoint, CGImage)