使用xslt创建列表

时间:2014-11-19 20:29:44

标签: xslt

我有以下XML

<?xml version="1.0" encoding="UTF-8"?>
<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <FirstName>John</FirstName>
  <LastName>Peter</LastName>
  <Initial>T</Initial>
</Employee>

在XSLT 1.0中,我想编写一个XSLT,从上面的xml生成以下XML。任何人都可以帮我写这个xslt?

<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfstringVariable xmlns="http://schemas.abc.org/2004/07/"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <stringVariable>
    <name>FirstName</name>
    <value>John</value>
  </stringVariable>
  <stringVariable>
    <name>LastName</name>
    <value>Peter</value>
  </stringVariable>
  <stringVariable>
    <name>Initial</name>
    <value>T</value>
  </stringVariable>
</ArrayOfstringVariable>

1 个答案:

答案 0 :(得分:2)

遵循XSLT

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" omit-xml-declaration="no"
       encoding="UTF-8" indent="yes" />
  <xsl:template match="Employee">
    <ArrayOfstringVariable>
      <xsl:apply-templates select="*"/>
    </ArrayOfstringVariable>
  </xsl:template>
  <xsl:template match="*">
    <stringVariable>
      <name>
        <xsl:value-of select="local-name()"/>
      </name>
      <value>
        <xsl:value-of select="."/>
      </value>
    </stringVariable>
  </xsl:template>
</xsl:stylesheet>

当应用于示例输入时,您的问题中的XML会产生以下输出:

<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfstringVariable>
  <stringVariable>
    <name>FirstName</name>
    <value>John</value>
  </stringVariable>
  <stringVariable>
    <name>LastName</name>
    <value>Peter</value>
  </stringVariable>
  <stringVariable>
    <name>Initial</name>
    <value>T</value>
  </stringVariable>
</ArrayOfstringVariable>

如果您想在ArrayOfStringVariable元素的输出XML中使用命名空间,可以通过两次调整来完成:将xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"添加到xsl:stylesheet声明并调整{{ 1}} <ArrayOfstringVariable的{​​{1}},<ArrayOfstringVariable xmlns="http://schemas.abc.org/2004/07/" >的{​​{1}} <xsl:template match="Employee">