如何 - XSLT转型

时间:2012-09-03 03:36:55

标签: xml-parsing transform xslt-2.0

只是想询问如何在下面的给定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。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这里没有足够的信息给你一个明确的答案。

如果你有一个作者列表,你可以依次对每个作者的名字使用fn:match(),也许是在模式中将空格更改为\ s +之后。

我通常使用Perl来做这类事情,但要注意不要破坏标记结构。

在任何情况下,您都需要一次处理一个单词,可能递归地查找最长匹配,如果一个名称只是“John”而另一个名称是“John Doe”。请注意,您不会将标记添加到已经处理的名称中。

如果文本确实总是说明你在那里有什么,但是有不同的名字,你可以有一个模板来匹配ArticleFootnote / Para [contains(。,'是相同的控制者')]并使用substring()和substring-before()或XSLT 2模式匹配。