我有一个看起来像这样的 xml 文档:
<oldEle userlabel="label1">
<ele1>%02d.jpeg</ele1>
</oldEle>
<oldEle userlabel="label2">
<ele1>%02d.tiff</ele1>
</oldEle>
我希望它是这样的:
<JPEG userlabel="label1">
<ele1>%02d.jpeg</ele1>
</JPEG>
<TIFF userlabel="label2">
<ele1>%02d.tiff</ele1>
</TIFF>
我试过这个。
<xsl:template match="//xmlns:oldNode[contains(//xmlsns:oldNode/root:ele1, '.')]">
<xsl:element name="{translate(substring-after(//xmlns:ele1, '.'),
'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
但只获取文件 ext 的第一个。例如,如果 jpeg 是第一个,我会得到两个节点。有人可以就为什么这不起作用提供专业建议。
顺便说一句,我也试过这个,但同样的事情发生了:
<xsl:template match="//xmlns:oldNode[contains(//root:ele1, '.jpeg')]">
<xsl:element name="JPEG">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="//xmlns:oldNode[contains(//root:ele1, '.tiff')]">
<xsl:element name="TIFF">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>