如何将多个节点组合为XSLT



我将其作为输入:

<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>

相关内容

  • 没有找到相关文章

最新更新