我将其作为输入:
<name>
<n1>nisha</n1>
</name>
<name>
<n1>aisha</n1>
</name>
<name>
<n1>shankar</n1>
</name>
<surname>
iyer
</surname>
我只想将其作为我的输出,仅适用于具有名称标签的元素:
<name>
<n1>nisha</n1>
<n1>aisha</n1>
<n1><shankar</n1>
</name>
请注意,您的XML文件需要一个根元素,否则无法处理,即:
<names>
<name>
<n1>nisha</n1>
</name>
...
</names>
产生所需输出的简单XSLT样式表是:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/*"> <!-- Or match="/pathToNameElements" -->
<name>
<xsl:apply-templates select="name/n1" />
</name>
</xsl:template>
<xsl:template match="name/n1">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
与此一样简单:
<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="name[1]">
<name>
<xsl:copy-of select="/*/name/*"/>
</name>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
当在以下XML文档上应用此转换(所提供的文本,已更正为形式良好的XML文档):
<people>
<name>
<n1>nisha</n1>
</name>
<name>
<n1>aisha</n1>
</name>
<name>
<n1>shankar</n1>
</name>
<surname>
iyer
</surname>
</people>
所需的结果:
<name>
<n1>nisha</n1>
<n1>aisha</n1>
<n1>shankar</n1>
</name>