xslt-1.0 - 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
<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>
推荐阅读
- firebase - 如何将 Shopify 信息推送到 firebase 数据库?
- javascript - 我试图在调用和使用另一个函数的对象中创建一个函数
- c# - Nlog 日志级别规则未更改
- qt - 缩放文本的正确方法是什么?
- stata - 使用特定代码保留所有 ID 的所有记录
- react-native - 我正在使用 axios 库在 react native 中获取本地 json 文件,但是当我发出 get 请求时,它给了我未处理的承诺拒绝
- sql - 可以对不在主查询中的表中的行进行计数的 Sql select 语句
- r - 这个 eval 解析代码的替代方法是什么?
- sql - 使用 GroupBy 的 Access/SQL 累积查询
- html - 作为项目符号点的图像不显示在 HTML、CSS 中