只是想询问如何在下面的给定xml示例中获取作者姓名并将其归结为eq =“yes”。 EQ意味着平等贡献者。
这是XML。
<ArticleFootnote Type="Misc">
<Para>John Doe and Jane Doe are equal contributors.</Para>
</ArticleFootnote>
这应该是其他形式的XML的输出。
<AuthorGroups>
<Authors eq="yes">John Doe</Authors>
<Authors eq="yes">Jane Doe</Authors>
</AuthorGroups>
假设JOhn Doe和Jane Doe已在作者列表中定义,但在转换后,author标签应具有属性eq =“yes”。请帮忙,因为我不太了解xlst。
提前致谢。
答案 0 :(得分:0)
这里没有足够的信息给你一个明确的答案。
如果你有一个作者列表,你可以依次对每个作者的名字使用fn:match(),也许是在模式中将空格更改为\ s +之后。
我通常使用Perl来做这类事情,但要注意不要破坏标记结构。
在任何情况下,您都需要一次处理一个单词,可能递归地查找最长匹配,如果一个名称只是“John”而另一个名称是“John Doe”。请注意,您不会将标记添加到已经处理的名称中。
如果文本确实总是说明你在那里有什么,但是有不同的名字,你可以有一个模板来匹配ArticleFootnote / Para [contains(。,'是相同的控制者')]并使用substring()和substring-before()或XSLT 2模式匹配。