首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XLST -根据长度将长地址拆分成多个标记

XLST -根据长度将长地址拆分成多个标记
EN

Stack Overflow用户
提问于 2019-10-24 19:05:27
回答 1查看 50关注 0票数 0

我有一个XML样式表转换,它需要将一个长文本拆分为多个标记。它需要根据最大长度10来拆分,当下一个字符不能放入当前行时,它将停止。

对此有什么建议吗?

例如:

之前:

代码语言:javascript
复制
<main>
   <header>
      <addresses>aaaaaaa bbbb cccc e ffffffff ggggg hhhh</addresses>
   </header>
</main>

之后:

代码语言:javascript
复制
<main>
   <header>
      <address>aaaaaaa</address>
      <address>bbbb cccc</address>
      <address>e ffffffff</address>
      <address>ggggg hhhh</address>
   </header>
</main>
EN

回答 1

Stack Overflow用户

发布于 2019-10-24 21:23:22

你可以试试这个

代码语言:javascript
复制
    <?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="xs" version="2.0">
    <xsl:output method="xml" omit-xml-declaration="no"/>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="addresses">
    <xsl:call-template name="splitSequence">
        <xsl:with-param name="input" select="."/>
    </xsl:call-template>
    </xsl:template>

    <xsl:template name="splitSequence">
        <xsl:param name="input" />
        <addresses><xsl:value-of select="substring($input,1,10)" /></addresses>
        <xsl:if test="substring($input,10+1)">
            <xsl:call-template name="splitSequence">
                <xsl:with-param name="input" select="substring($input,10+1)" />
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

输出为

代码语言:javascript
复制
<main>
<header>
    <addresses>aaaaaaa bb</addresses>
    <addresses>bb cccc e </addresses>
    <addresses>ffffffff g</addresses>
    <addresses>gggg hhhh</addresses>
</header>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58539989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档