【发布时间】:2016-12-14 05:11:58
【问题描述】:
我在一个 XML 文档中有如下默认配置项:
<ProgramConfig>
<Fragment xml:lang="en" name="TargetSector">fragment/target_sector.xdp</Fragment>
<Fragment xml:lang="fr" name="TargetSector">fragment/target_sector_fr.xdp</Fragment>
<MasterTemplate xml:lang="en">master/default_en.xdp</MasterTemplate>
<MasterTemplate xml:lang="fr">master/default_fr.xdp</MasterTemplate>
</ProgramConfig>
特定程序可以覆盖默认配置,例如:
<ProgramConfig>
<Fragment xml:lang="en" name="TargetSector">fragment/1-5ABQ/target_sector.xdp</Fragment>
<MasterTemplate xml:lang="fr">master/default_fr_1-5ABQ.xdp</MasterTemplate>
</ProgramConfig>
我需要合并XML文档,这样输出就变成了:
<ProgramConfig>
<Fragment xml:lang="en" name="TargetSector">fragment/1-5ABQ/target_sector.xdp</Fragment>
<Fragment xml:lang="fr" name="TargetSector">fragment/target_sector_fr.xdp</Fragment>
<MasterTemplate xml:lang="en">master/default_en.xdp</MasterTemplate>
<MasterTemplate xml:lang="fr">master/default_fr_1-5ABQ.xdp</MasterTemplate>
</ProgramConfig>
如果程序特定的 XML 有一个与默认 XML 具有相同名称和匹配属性的元素,那么它应该替换输出文档中的值。
XML 非常扁平 - 它始终是 ProgramConfig 根目录下的一组元素,没有其他子元素。每个元素都定义了资产的文件系统路径。
有没有办法使用 XSLT 做到这一点。我尝试使用文档功能,但我不确定如何匹配元素和所有属性。
【问题讨论】: