【发布时间】:2015-06-24 23:49:45
【问题描述】:
我必须使用 XSLT 更新 XML。
我之前的 XML 元素有一个属性为Id 的元素,其值为int。有些元素没有这个Id,因为它们不能被任何其他元素引用。
XML 示例:
<Object Id="12359" Type="TypeX">
<Object Type="TypeA">
<SomeOtherObject Id="112" Type="TypeV"/>
</Object>
<SomeOtherOtherObject Id="1596" Type="TypeM"/>
</Object>
对于一个特定的项目(我可以通过 XPATH 请求轻松地选择它,我想生成一个新的 ID,它不被任何其他元素使用。
这可以通过 XSLT 完成吗?
我已经有了一些钥匙:
<xsl:key name="node-reference-key" match="*[@Id]" use="@Id" />
我可以像这样选择缺少属性的元素:
<xsl:template match="*[@Type='TypeA']">
这将由 C# 应用程序运行,但我想不惜一切代价避免任何 C# 代码。
【问题讨论】:
-
必须是整数吗? XSLT 有一个
generate-id()函数来为每个节点分配一个唯一的字符串标识符。 -
是的,这是一个模型,目前是在XML中序列化,在数据库中,发送到一些硬件设备,没有机会改变这个id的类型
-
你真的应该告诉我们它是 XSLT 1.0 还是 2.0。