如果XSLT中的字符超过35个,如何正确分割字符串

问题描述

我正在处理一些字符串以在Sage中导入地址。 问题是,如果该地址名包含超过35个字符,则需要拆分我的地址名称,将第一部分放在一个变量中(最多35个字符),另一部分放在另一个变量中。 但是,不只是将其拆分为35/14,还需要在最后一个空格之前将其拆分,以保持地址名称的可读性。

例如: 法国巴黎斯普利特市右Begun街34号

var 1 = City of Right Begun Street 34

var 2 =分裂,法国巴黎 (分割包含第35个字符,因此必须在最后一部分)。

您是否知道如何使用XSLT / Xpath 1.0 / Xpath 2.0来执行此操作?我已经尝试过substring-before和substring-after,但我可以弄清楚当需要拆分时如何删除它。

非常感谢您!

解决方法

xsl:analyze-string可以帮助:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="#all"
    version="3.0">
    
  <xsl:param name="pattern" as="xs:string">^(.{1,35}) (.*$)</xsl:param>

  <xsl:template match="data">
      <xsl:copy>
          <xsl:analyze-string select="." regex="{$pattern}">
              <xsl:matching-substring>
                  <first-part>
                      <xsl:value-of select="regex-group(1)"/>
                  </first-part>
                  <second-part>
                      <xsl:value-of select="regex-group(2)"/>
                  </second-part>
              </xsl:matching-substring>
          </xsl:analyze-string>
      </xsl:copy>
  </xsl:template>
  
  <xsl:output indent="yes"/>
  
</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/ei5R4u2

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...