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:如何将一个元素解析为多个变量的主要内容,如果未能解决你的问题,请参考以下文章
xslt2+ 如何将组与任何匹配的元素组合并删除元素的重复项