我有一个XSLT,它将一个xml转换为另一个xml,在其中执行以下简单操作。
<xsl:template match="MAX/MSISDN">
<msisdn>
<xsl:apply-templates select="@*|node()"/>
</msisdn>
</xsl:template>
这样做的时候,我也想从
这样的字符串中更改值。<msisdn>0187890567</msisdn>
到
<msisdn>90187890567</msisdn>
原始XML为;
<MAX>
<MSISDN>0187890567</MSISDN>
</MAX>
我可以在相同的模板定义中执行此操作吗?怎么做?
答案 0 :(得分:0)
您可以像这样简单地将前缀添加到模板中:
<xsl:template match="MAX/MSISDN">
<msisdn>
<xsl:apply-templates select="@*"/>
<xsl:text>9</xsl:text>
<xsl:value-of select="." />
</msisdn>
</xsl:template>
或者,您可以有第二个模板来匹配text()
节点并将其附加到那里
<xsl:template match="MAX/MSISDN">
<msisdn>
<xsl:apply-templates select="@*|node()" />
</msisdn>
</xsl:template>
<xsl:template match="MSISDN/text()">
<xsl:text>9</xsl:text>
<xsl:value-of select="." />
</xsl:template>
如果您不想在9
元素为空的情况下输出MSISDN
,则首选后者。
答案 1 :(得分:0)
使用> @a[0..1,3].flat;
(a b d)
功能
concat()