我有一个元素,其中填充的值始终遵循以下格式:
一些例子:
<ID>MBAA01_20151014_103605_H3Y</ID>
<ID>34FG01_22251123_341234</ID>
<ID>F6F7G8_30151124_279321_YU</ID>
<ID>123SDT_45891212_345321</ID>
我正在尝试编写一个XSLT:
所以上面的例子在转换之后会是这样的:
<ID>20151014103605</ID>
<ID>22251123341234</ID>
<ID>30151124279321</ID>
<ID>45891212345321</ID>
实际的原始XML看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FeedbackAssets>
<ID>MBAA01_20151014_103605_H3Y</ID>
<PlanNumber1>A01</PlanNumber1>
<PlanNumber2>B02</PlanNumber2>
<PlanNumber3>CA03</PlanNumber3>
<PlanNumber4>D04</PlanNumber4>
<PlanNumber5>F5</PlanNumber5>
</FeedbackAssets>
<FeedbackAssets>
<ID>34FG01_20151123_341234</ID>
<PlanNumber1>MM4</PlanNumber1>
<PlanNumber2>11</PlanNumber2>
<PlanNumber3>CA03</PlanNumber3>
<PlanNumber4>D6</PlanNumber4>
<PlanNumber5>Y5</PlanNumber5>
</FeedbackAssets>
<FeedbackAssets>
<ID>F6F7G8_20151124_279321_YU</ID>
<PlanNumber1>ZZ5</PlanNumber1>
<PlanNumber2>B02</PlanNumber2>
<PlanNumber3>CA03</PlanNumber3>
<PlanNumber4>D04</PlanNumber4>
<PlanNumber5>FR5</PlanNumber5>
</FeedbackAssets>
<FeedbackAssets>
<ID>123SDT_20151212_345321</ID>
<PlanNumber1>WE4</PlanNumber1>
<PlanNumber2>G6H</PlanNumber2>
<PlanNumber3>CA03</PlanNumber3>
<PlanNumber4>D04</PlanNumber4>
<PlanNumber5>G5</PlanNumber5>
</FeedbackAssets>
谢谢
答案 0 :(得分:1)
我正在尝试编写一个XSLT:
- 删除前7个字符(6和下划线)
- 删除8位数字和6位数字
之间的下划线- 删除任何符合6位数字符的字符。
这可以重述为:
假设模板匹配ID
,则归结为:
<xsl:value-of select="substring(translate( ., '_', ''), 7, 14)" />
答案 1 :(得分:1)
使用 XSL-T 2.0 ,您可以使用基于正则表达式的替换:
<xsl:template match="ID">
<ID>
<xsl:value-of select="replace(./text(), '[A-Z0-9]{6}_(\d{8})_(\d{6})(_[A-Z0-9]{1,5})?', '$1$2')"/>
</ID>
</xsl:template>