XSLT:我可以使用 xslt 更新 xml 节点中的值吗?
例如,我有一个 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 更改任何节点的任何其他属性吗?如果是,有人可以给我一些关于如何做到这一点的例子吗?
提前致谢。
For example I have a xml like
<books>
<book id="1">
<title id="11" name="Basic XML"/>
<price id="12" amount="500"/>
<quantity id="13" number="10"/>
</book>
</books>
Can update the name of the book "Basic XML" to "Basic XSLT" or change any other attributes of any node using XSLT? If yes, can anyone give me some examples on how to do it?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此转换:
应用于提供的 XML 文档时:
产生所需的正确结果:
说明:
身份规则/模板“按原样”复制每个节点。
身份模板由与任何属性匹配的单个模板覆盖,该属性的名称可以作为在中指定的
repAttr
元素的name
属性之一的值找到。my:reps
元素(嵌入 XSLT 样式表中的参数)。在这种情况下,将使用相同的名称和新值重新创建(而不是复制)该属性,该值在相应的
repAttr
元素(其value
属性)中指定)。This transformation:
when applied on the provided XML document:
produces the wanted, correct result:
Explanation:
The identity rule/template copies every node "as-is".
The identity template is overriden by a single template matching any attribute whose name can be found as value of one of the
name
attributes of arepAttr
element that is specified in themy:reps
element (parameters embeded in the XSLT stylesheet).In this case the attribute is re-created (not copied) with the same name and with the new value, specified in the corresponding
repAttr
element (itsvalue
attribute).我无法“更新”输入 Xml,因为 XSLT 纯粹是一种输出驱动技术。它会创建一份新文档,并且无法修改现有文档。
您可以制作几乎相同的副本,但正如 @Oded 评论指出的那样,XSLT 可能有点过分了。 xsl 看起来像(修改后的身份转换)
I cannot "update" the input Xml as XSLT is purely an output driven technology. It creates anew document and cannot modify the existing one.
You could make an almost identical copy but as @Oded comment points out XSLT may be overkill. The xsl would look something like (a modified identity transform)