【发布时间】:2021-12-23 18:11:46
【问题描述】:
我在下面定义了两个示例文档。在 module_meta.xml 中,只有 xpath /mdata/effectivity 上的效果节点是相关的。如下所示,它们包含一个path 属性和一个effrg 属性。现在的目标是评估module.xml 上的xpath(在module_meta.xml 中定义为path 属性)并将effrg 附加到它上面。有关所需结果,请参阅desired_output.xml。 xsl 转换应用于module.xml。我知道我必须使用document() 函数来“包含”module_meta.xml,但到目前为止我很茫然。
module.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE proc>
<procbody>
<info>
<action lid="a">
</action>
<action lid="b">
</action>
<action lid="c">
</action>
</info>
</procbody>
module_meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mdata>
<mdata>
<metadata>
<metadata-item name="n1" value="v1" />
<metadata-item name="n2" value="v2" />
<metadata-item name="n3" value="v3" />
</metadata>
<effectivity>
<effect path="//*[@lid='a']" effrg="0074 0080 0087" />
<effect path="//*[@lid='b']" effrg="0136 0146 0174" />
</effectivity>
</mdata>
desired_output.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE proc>
<procbody>
<info>
<action lid="a" effrg="0074 0080 0087">
</action>
<action lid="b" effrg="0136 0146 0174">
</action>
<action lid="c">
</action>
</info>
</procbody>
【问题讨论】:
-
XSLT 3(受 Saxon 10 及更高版本的所有版本、Saxon 9.8 及更高版本的 PE 和 EE、Saxon-JS 2 和 Altova XML 2017 R3 及更高版本的支持)具有
xsl:evaluate。一些较旧的实现提供扩展功能或让您设置一个用于 XPath 评估。或者你可以链接两个样式表。
标签: xslt