如何从 XSLT 中的地址字段中拆分街道和门牌号?

     2023-02-16     54

关键词:

【中文标题】如何从 XSLT 中的地址字段中拆分街道和门牌号?【英文标题】:How can I split street and house number from address field in XSLT? 【发布时间】:2018-01-28 23:12:38 【问题描述】:

如何通过 XSLT 街道和门牌号分开?我需要使用 XSLT 将地址字符串拆分为两个节点。所以,例如,

<Customer> 
   <ShippingAddress>Test Street 32a-33b</ShippingAddress> 
...
</Customer>

应该如下变换:

<Customer> 
<Street>Test Street</Street> 
<HouseNo>32a-33b</HouseNo> 
</Customer>

我认为正确的做法是从字符串的第一个数字开始拆分。有人出主意吗?

【问题讨论】:

你可以使用 XSLT 2.0 吗? 你能保证 ShippingAddress 的格式吗(即数字总是在最后并且没有空格)? 是的,我可以使用 xslt 2.0,并且门牌号码将始终位于最后,但可能有空格,例如'Elmstreet 34 - 36' 应该在 'Elmstreet' 和 '34 - 36' 中拆分 使用xsl:analyze-string 和正则表达式([^0-9]*)([0-9].*) 很容易,将这两个部分返回为regex-group(1)regex-group(2),但我很难想象它在任何情况下都能给出令人满意的结果真实数据。 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:

这可能有点晚了,但我遇到了同样的问题。 经过一些调整,以下对我有用。

传入元素:

<AddressLine1>School straat 1</AddressLine1>

XSLT 2.0:

<Street>
    <xsl:value-of select="substring(AddressLine1, 1, (string-length(AddressLine1)-(string-length(tokenize(AddressLine1,' ')[last()])+1)))"/>
</Street>
<StreetNumber>
    <xsl:value-of select="tokenize(AddressLine1,' ')[last()]"/>
</StreetNumber>

输出:

<Street>School straat</Street>
<StreetNumber>1</StreetNumber>

【讨论】:

一个有效的解决方案是找到分割点ONCE,然后用它来提取前后部分。【参考方案2】:

在 XSLT 2.0 中,您可以使用 analyze-string 来使用正则表达式来拆分字符串。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" indent="yes" />

    <xsl:template match="ShippingAddress">
        <xsl:analyze-string select="." regex="^(\D+)(\d.*)$">
            <xsl:matching-substring>
                <Street><xsl:value-of select="normalize-space(regex-group(1))" /></Street>
                <HouseNo><xsl:value-of select="regex-group(2)" /></HouseNo>
            </xsl:matching-substring>
        </xsl:analyze-string>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

【讨论】:

干得好。非常感谢。现在我只有一个愚蠢的问题。我需要在另一个模板中调用 ' 目前身份模板正在这样做。但是如果你真的想这样做,你可以做&lt;xsl:apply-templates select="ShippingAddress" /&gt;,假设你在一个匹配Customer的模板中。 完美的蒂姆。太感谢了。有用。几秒钟后我会发布我的下一个问题,也许你会看看它:-D

在地址字段中的房屋编号前插入逗号

】在地址字段中的房屋编号前插入逗号【英文标题】:Insertacommainaddressfieldbeforenumberofhouse【发布时间】:2019-07-1909:08:13【问题描述】:我有一个表,其中包含很多没有逗号的地址字段街道名称和门牌号码之间。比如:"VIAMILANO123""... 查看详情

如何在 Redshift 中替换 JSON 中的值?

...列包含JSON格式的地址信息。我想用“--”替换街道名称和门牌号。这是我的专栏的样子:"1":"house_no":1,"street_name":"street1","2":"house_no":2,"street_name":"st 查看详情

Laravel 中的地址验证

...户输入的地址,他们在其中提供了街道名称、邮政编码、门牌号等...问题是,如何验证地址是否有效?更好的问题是,如何使用用户的IP检查输入是否与用户的当前国家/地区匹配,根据这些信息我会闪现一些验证错误。我可以在... 查看详情

如何使用 XSLT 从电子邮件地址中对值进行子串化

】如何使用XSLT从电子邮件地址中对值进行子串化【英文标题】:howtosubstringavaluefromemailaddresswithXSLT【发布时间】:2021-12-0718:09:18【问题描述】:我想从XSLT中的电子邮件地址中提取名字的第一个字母和整个第二个名字。不确定我... 查看详情

xslt 1.0 中的拆分功能

...nctioninxslt1.0【发布时间】:2011-11-1712:17:50【问题描述】:如何在XSLT1.0中拆分节点值?<mark>1,2</mark>我需要在for循环中对split输出的每个值执行一些操作。<xsl:for-eachselect=""></xsl:for-each>如何做到这一点?【问题讨论... 查看详情

java根据ip地址获取相应的所在地,精确到街道和门牌号,要怎么实现?

这个与具体程序实现没有关系。 主要看你采用了多精确的 IP数据库。据说 纯真IP地址数据库 相对比较精确,还有其他的,你可以找找。追问相应的接口有吗?追答就是一个access的数据库文件,没有什么接口。参... 查看详情

如何在第一个数字之后拆分街道地址?

】如何在第一个数字之后拆分街道地址?【英文标题】:Howtosplitastreetaddressafterthefirstnumber?【发布时间】:2021-07-2820:41:38【问题描述】:我不知道如何解决这个问题,但我需要将一个字符串分成两部分。以下面的字符串为例:Nort... 查看详情

如何在 pl/sql 中将街道值拆分为原子?

】如何在pl/sql中将街道值拆分为原子?【英文标题】:howdoIsplitthestreetvaluesintoatomicinpl/sql?【发布时间】:2013-05-1214:06:48【问题描述】:我的任务是将非原子(澳大利亚)街道地址转换为原子,这意味着当前街道数据将作为街道编... 查看详情

从地址中如何提取或者识别街道?支持模糊地址

从地址中如何提取或者识别街道?直接上效果:1.没有街道情况下,也能识别出街道地址:郑州大学南校区识别效果:"source":"郑州大学南校区","province":"河南省","city":"郑州市... 查看详情

从地址中如何提取或者识别街道?支持模糊地址

从地址中如何提取或者识别街道?直接上效果:1.没有街道情况下,也能识别出街道地址:郑州大学南校区识别效果:"source":"郑州大学南校区","province":"河南省","city":"郑州市... 查看详情

从地址中如何提取或者识别街道?支持模糊地址

从地址中如何提取或者识别街道?直接上效果:1.没有街道情况下,也能识别出街道地址:郑州大学南校区识别效果:"source":"郑州大学南校区","province":"河南省","city":"郑州市... 查看详情

我可以从 HERE 的反向地理编码 API 调整返回的地址标签吗?

...望HERE的反向地理编码API响应中的地址标签仅包含街道、门牌号和城市。是否可以通过设置一些请求参数来实现?【问题讨论】:【参考方案1】:答案直接包含解析后的地址,因此您可以选 查看详情

如何从android中的纬度和经度获取完整的地址? [复制]

】如何从android中的纬度和经度获取完整的地址?[复制]【英文标题】:Howtogetcompleteaddressfromlatitudeandlongitudeinandroid?[duplicate]【发布时间】:2021-06-2919:34:40【问题描述】:如何获取经纬度的完整地址?我想从android中的纬度和经度中... 查看详情

在 sqlalchemy 中使用 column_property,包括整数列

...我想使用column_property获取完整地址,包括一列中的街道和门牌号。问题是我想组合两个不同类型的列。门牌号是整数类型,街道是数字字符串,这就是我收到以下错误的原因:sqlalc 查看详情

谷歌地图快速获取街道号码

...:2015-12-1621:30:28【问题描述】:如何快速从谷歌地图获取门牌号?我的代码:letgeocoder=GMSGeocoder()geocoder.reverseGeocodeCoordinate(place.coordinate)response,errorinifletaddress=response?.f 查看详情

jQuery自动完成中的两个字段

...eryautocomplete【发布时间】:2012-04-0701:25:17【问题描述】:如何使用jQuery自动完成插件链接两个输入字段?例如,我有两个字段:City和Street。因此,当我选择某个城市时,我希望在Street字段中只看到所选城市的街道。【问题讨论... 查看详情

使用 XSLT 删除 XML 消息中的空元素字段和默认值

】使用XSLT删除XML消息中的空元素字段和默认值【英文标题】:RemoveEmptyElementsfieldandDefaultvalueinXMLmessageusingXSLT【发布时间】:2012-01-0217:48:15【问题描述】:要求的详细说明是,在Request消息中有一个名为IgnoreEmptyElementInd的字段,它... 查看详情

如何从地图上获取街道地址、邮政编码、国家、州?

】如何从地图上获取街道地址、邮政编码、国家、州?【英文标题】:Howtogetthestreetaddress,zipcode,country,statefrommap?【发布时间】:2018-10-2008:06:18【问题描述】:我正在开发一个应用程序,当使用点击图像时,应该打开谷歌地图,当... 查看详情