gpt4 book ai didi

xml - XSLT:我可以使用 xslt 更新 xml 节点中的值吗?

转载 作者:数据小太阳 更新时间:2023-10-29 01:53:53 24 4
gpt4 key购买 nike

例如我有一个像这样的xml

 <books>
<book id="1">
<title id="11" name="Basic XML"/>
<price id="12" amount="500"/>
<quantity id="13" number="10"/>
</book>
</books>

能否将“Basic XML”一书的名称更新为“Basic XSLT”或使用 XSLT 更改任何节点的任何其他属性?如果是的话,任何人都可以给我一些关于如何做的例子吗?

提前致谢。

最佳答案

这个转换:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<my:reps>
<repAttr name="name" value="Basic XSLT"/>
<repAttr name="amount" value="300"/>
<repAttr name="number" value="20"/>
</my:reps>

<xsl:strip-space elements="*"/>

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

<xsl:template match=
"@*[name()=document('')/*/my:reps/*/@name]">

<xsl:attribute name="{name()}">
<xsl:value-of select=
"document('')/*/my:reps/*[@name=name(current())]/@value"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>

应用于提供的 XML 文档时:

<books>
<book id="1">
<title id="11" name="Basic XML"/>
<price id="12" amount="500"/>
<quantity id="13" number="10"/>
</book>
</books>

产生想要的、正确的结果:

<books>
<book id="1">
<title id="11" name="Basic XSLT"/>
<price id="12" amount="300"/>
<quantity id="13" number="20"/>
</book>
</books>

解释:

  1. 身份规则/模板“按原样”复制每个节点。

  2. 标识模板被匹配任何属性的单个模板覆盖,该模板的名称可以作为 repAttr 元素的 name 属性之一的值找到在 my:reps 元素中指定(XSLT 样式表中嵌入的参数)。

  3. 在这种情况下,使用相同的名称和新值重新创建(而不是复制)属性,在相应的 repAttr 元素(它的 value 属性)。

关于xml - XSLT:我可以使用 xslt 更新 xml 节点中的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5351008/

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