【发布时间】:2019-07-09 15:30:19
【问题描述】:
我有以下 XML 示例:
<?xml version="1.0" encoding="UTF-8"?>
<languages>
<language lang='english' source='1'/>
<language lang='english' source='2'/>
<language lang='french' target='1' new1-fr='56' new2-fr='66'/>
<language lang='german' target='1' new1-ger='20' new2-ger='21'/>
<language lang='norwegian' target='2' new3-no='76' new2-no='15'/>
<language lang='norwegian' target='1' new1-no='30'></language>
<language lang='german' target='2' new1-ger='23' new2-ger='24' new3-ger='25'/>
</languages>
我想做的是: 当语言元素的@target(@lang=french|german|norwegian)与语言的@source(@lang='english)'相同时,将它们的属性(所有以'new'开头)作为属性复制到元素语言 lang='english'
它应该是这样的:
<languages>
<language lang='english' source='1' new1-fr='56' new2-fr='66' new1-ger='20' new2-ger='21' new1-no='30'/>
<language lang='english' source='2' new3-no='76' new2-no='15' new1-ger='23' new2-ger='24' new3-ger='25'/>
</languages>
非常感谢您的帮助。
【问题讨论】:
-
你到底在哪里坚持这个?
-
如果您不知道从哪里开始,请从 identity transform 开始,使用
@target添加匹配language的 xsl:key,添加匹配language[@source]的模板以输出语言元素并将模板应用于当前属性以及匹配键的属性 (key('lang',@source)/@*)。您可能还需要添加一个与需要剥离的内容匹配的空模板 (language[@target]|language[@target]/@lang|@target)。
标签: xml xslt xpath attributes transformation