我正在编写一个 xslt 样式表来将一个 xml 转换为另一个 xml。
这是原始xml的简化版本:
<eml>
<datatable>
<physical>
<distribution id="100"/>
</physical>
</datatable>
<software>
<implementation>
<distribution id="200"/>
</implementation>
</software>
<additionalMetadata>
<describes>100</describes>
<describes>200</describes>
<describes>300</describes>
<describes>400</describes>
</additionalMetadata>
</eml>
我尝试使用 Xpath 来选择“描述”的节点集,该节点集的值不等于//physical/distribution
or的 id 值software/implementation/distribution
。在上述情况下,我想获取节点集:
<deseribes>300</describes>
<deseribes>400</describes>
(100 和 200 是//physical/distribution
or 的属性 id 值software/implementation/distribution
)。
我写了类似的东西:
<xsl:with-param name="describes-list"
select="./describes[//physical/distribution/@id !=. and
//software/implementation/distribution/@id != .] "/>
它适用于上述示例。但是,数据表和软件的元素是可重复的。所以这个xml是有效的:
<eml>
<datatable>
<physical>
<distribution id="100"/>
</physical>
</datatable>
<datatable>
<physical>
<distribution id="300"/>
</physical>
</datatable>
<software>
<implementation>
<distribution id="200"/>
</implementation>
</software>
<additionalMetadata>
<describes>100</describes>
<describes>200</describes>
<describes>300</describes>
<describes>400</describes>
</additionalMetadata>
</eml>
但是我的 xslt 不适用于上面的例子:(
你介意对此有所了解吗?先感谢您!
静