XSLT修改值

发布于 2024-11-02 09:00:49 字数 345 浏览 1 评论 0原文

我需要将 XML 转换为另一个 XML。

我需要做的就是像这样修改其中一个元素的值。在源代码中,

<NUM>I19071230</NUM>

我需要将第一个字母替换为已修复的“ABCD”。所以它会变成这样

ABCD19071230

然后我需要确保总长度是 14。如果不是,则在 ABCD 之间添加 0,输出应该如下所示。

ABCD0019071230

我需要将此值存储在变量中,以便可以重用。 我正在使用 XSLT 1.0。提前致谢。

I have XML that I need to transform into another XML.

What I need to do is modify the value of one of the element like this. In the source I have this

<NUM>I19071230</NUM>

I need to replace the first letter with 'ABCD' which is fixed. So it will become this

ABCD19071230

Then I need to make sure the total length is 14. If it is not then add 0s between ABCD and the output should look like this.

ABCD0019071230

I need to store this value in a variable so it can be reused.
I'm using XSLT 1.0. Thanks in Advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野侃 2024-11-09 09:00:49

使用

<xsl:variable name="vComposed" select=
   "concat('ABCD',
           substring('000000000000000',
                     1,
                     14 -string-length(NUM) -3),
           substring(NUM, 2, 10)
           )
 "/>

这里是使用此变量的简短转换

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:variable name="vComposed" select=
   "concat('ABCD',
           substring('000000000000000',
                     1,
                     14 -string-length(NUM) -3),
           substring(NUM, 2, 10)
           )
 "/>

 <xsl:value-of select="$vComposed"/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<NUM>I19071230</NUM>

想要的、正确的生成结果

ABCD0019071230

您可以更改 NUM 字符串值的长度并验证在所有情况下是否生成正确的结果。

Use:

<xsl:variable name="vComposed" select=
   "concat('ABCD',
           substring('000000000000000',
                     1,
                     14 -string-length(NUM) -3),
           substring(NUM, 2, 10)
           )
 "/>

Here is a short transformation using this variable:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:variable name="vComposed" select=
   "concat('ABCD',
           substring('000000000000000',
                     1,
                     14 -string-length(NUM) -3),
           substring(NUM, 2, 10)
           )
 "/>

 <xsl:value-of select="$vComposed"/>
 </xsl:template>
</xsl:stylesheet>

When this transformation is applied on the provided XML document:

<NUM>I19071230</NUM>

the wanted, correct result is produced:

ABCD0019071230

You can alter the length of the string value of NUM and verify that the correct result is produced in all cases.

海之角 2024-11-09 09:00:49

使用此 XPath 表达式:

concat(
   substring(
      'ABCD0000000000',
      1,
      15 - string-length(NUM)
   ),
   substring(NUM,2)
)

Use this XPath expression:

concat(
   substring(
      'ABCD0000000000',
      1,
      15 - string-length(NUM)
   ),
   substring(NUM,2)
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文