XSLT:如何将一个元素解析为多个变量

Posted

技术标签:

【中文标题】XSLT:如何将一个元素解析为多个变量【英文标题】:XSLT: How to parse out an element into multiple variables 【发布时间】:2021-12-14 06:17:09 【问题描述】:

我正在尝试从单个字段中解析出全名并将它们存储到不同的变量中,以便我可以将它们唯一地用作 FirstName、MiddleName、LastName。我正在从节点的顶层提取名称:

wd:Payee/@wd:Descriptor

其中包含类似的全名

约翰·F·肯尼迪

我尝试过使用

tokenize(wd:Payee/@wd:Descriptor, '\s+')

但是,我得到了一个额外的元素,它恰好是函数中使用的模式:

("John","F","Kennedy","\s+")

任何想法为什么?或者任何其他更好的想法如何实现这一点?

【问题讨论】:

请发布minimal reproducible example 显示输入、您当前的代码和预期的输出。 您会惊讶于有多少名字不符合以美国为中心的“名字/中间名/姓氏”方案。即使您创建了一个像您当前设想的那样“解析”名称的解决方案,对于很大一部分输入,解析结果也将是错误的。所以正确的解决办法是:不要。 【参考方案1】:

Sircharles,如果没有最小的可重现示例,很难确定,但您的 @wd:Descriptor 似乎可以包含多个空格符号。

您是否尝试过像这样标准化空格:

tokenize(normalize-space(wd:Payee/@wd:Descriptor),  '\s+')

最好的问候

【讨论】:

以上是关于XSLT:如何将一个元素解析为多个变量的主要内容,如果未能解决你的问题,请参考以下文章

使用 xslt 将 xml 复杂节点元素拆分为多个节点

xslt2+ 如何将组与任何匹配的元素组合并删除元素的重复项

XSLT:测试当前元素是不是匹配变量 xpath

当输入文件上的字段为空时,XSLT 2.0 如何跳过写入元素

使用元素名称将输入 XML 传递给 XSLT 中的变量

XSLT - 在多个文件时选择唯一元素