首页 > 解决方案 > XSLT 1.0 将字符串中的最后 4 个字符移动到新节点

问题描述

我有以下 XML:

<Documents>
    <Form>
         <FormCode>HP 1000 01 20</FormCode>
    </Form>
    <Form>
         <FormCode>MS FULL 00 01 12 19</FormCode>
    </Form>
</Documents>

所需的输出:

<Documents>
    <Form>
         <FormCode>HP 1000</FormCode>
         <FormDate>01 20</FormDate>
    </Form>
    <Form>
         <FormCode>MS FULL 00 01</FormCode>
         <FormDate>12 19</FormDate>
    </Form>
</Documents>

我需要提取最后 4 个字符<FormCode>并将它们放在一个新节点<FormDate>中。的长度值<FormCode>可以因每种形式而异。任何关于如何使用 XSLT 1.0 完成此任务的想法都将不胜感激。谢谢!

标签: xslt-1.0

解决方案


尝试:

XSLt 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

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

<xsl:template match="Form">
    <xsl:variable name="len" select="string-length(FormCode)" />
    <xsl:copy>
        <FormCode>
            <xsl:value-of select="substring(FormCode, 1, $len - 6)" />
        </FormCode>
        <FormDate>
            <xsl:value-of select="substring(FormCode, $len - 4)" />
        </FormDate>
     </xsl:copy>
</xsl:template>

</xsl:stylesheet>

推荐阅读