我有以下XML,其中包含所有小写的元素。
<data>
<employee>
<id>2784</id>
<employeeFirstName></employeeFirstName>
<employeeLastName nil="true"/></employeeLastName>
</employee>
</data>
这里我的要求是将所有元素转换为大写。
<DATA>
<EMPLOYEE>
<ID>2784</ID>
<EMPLOYEEFIRSTNAME></EMPLOYEEFIRSTNAME>
<EMPLOYEELASTNAME nil="true"/></EMPLOYEELASTNAME>
</EMPLOYEE>
</DATA>
任何人都可以帮我转换这个xml使用XSLT。
答案 0 :(得分:1)
在 XSLT 2.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="*"/>
<xsl:template match="*">
<xsl:element name="{upper-case(name())}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
XSLT 1.0
中最简单的方法
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XS/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{
translate(name(.),
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
&#13;
它将产生以下输出
<DATA>
<EMPLOYEE>
<ID>2784</ID>
<EMPLOYEEFIRSTNAME/>
<EMPLOYEELASTNAME nil="true"/>
</EMPLOYEE>
</DATA>
&#13;