【发布时间】:2016-07-28 16:46:04
【问题描述】:
我们使用的其中一个产品能够将配置信息输出为 XML,但是,在该输出文件中,它们不包含实际的主机标识符(名称),而是为每个标识符使用一种 GUID 引用。
我制作了一个 XML 文件,其中包含主机标识符 GUID 和实际主机标识符(查找)之间的“映射”,我想实现一个 XSLT,它将通过配置文件并替换所有主机标识符带有主机标识符名称的 GUID,它将从我创建的其他 XML 文件 (lookup.xml) 中查找。
lookup.xml 文件如下所示:
<?xml version="1.0"?>
<hostids>
<hostid name="e687903c-d185-4560-9117-c60f386b76c1">Agent</hostid>
<hostid name="b9230962-13ca-4d23-abf8-d3cd1ca4dffc">test2</hostid>
</hostids>
这是配置文件的样子(我通过一些处理运行了原始文件以得到它):
<?xml version="1.0"?>
<resources>
<resource><host>e687903c-d185-4560-9117-c60f386b76c1</host><url>/console/**</url></resource>
<resource><host>b9230962-13ca-4d23-abf8-d3cd1ca4dffc</host><url>/ServiceByName</url></resource>
</resources>
这是输出的样子:
<?xml version="1.0"?>
<resources>
<resource><host>Agent</host><url>/console/**</url></resource>
<resource><host>test2</host><url>/ServiceByName</url></resource>
</resources>
我认为我在 RedHat 机器上使用 xsltproc,它是 XSLT 1.0。
我已尝试使用我在此处找到的几个不同示例 XSLT 来实现此功能,例如:
XSLT "replace" values with another file matching by attribute
但无法让它们中的任何一个工作。
任何人都可以提供一个 XSLT 1.0 示例来实现这一点吗?
附:这是另一个有示例的线程,XSLT 1.0 示例对我不起作用。当我运行它时(在修改以匹配我的元素名称等之后),它看起来只是将整个原始 XML 包装在 .
How to use attribute values from another XML file as an element value selection in the current XML
【问题讨论】: