XLST-很好地根据长度将长地址拆分为多个标签



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

对此有什么建议吗?

例如:

之前:

<main>
<header>
<addresses>aaaaaaa bbbb cccc e ffffffff ggggg hhhh</addresses>
</header>
</main>

之后:

<main>
<header>
<address>aaaaaaa</address>
<address>bbbb cccc</address>
<address>e ffffffff</address>
<address>ggggg hhhh</address>
</header>
</main>

您可以尝试此

<?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>

输出是

<main>
<header>
<addresses>aaaaaaa bb</addresses>
<addresses>bb cccc e </addresses>
<addresses>ffffffff g</addresses>
<addresses>gggg hhhh</addresses>
</header>

相关内容

  • 没有找到相关文章

最新更新