0

我想通过 xslt 自动处理这个 xml 示例,字段和值必须动态解析,而不是硬编码:

<root>
<field1>value1</field1>
<field2>value2</field2>
</root>

对此:

<items>
<field>field1</field>
<value>value1</value>
<field>field2</field>
<value>value2</value>
</items>

请帮忙。

4

2 回答 2

0

你需要类似的东西:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="root">
    <items>
      <xsl:apply-templates/>
    </items>
  </xsl:template>

  <xsl:template match="*">
    <xsl:param name="firstElement" select="replace(name(),'([0-9])','')"/>
    <xsl:param name="SecondElement" select="replace(text(),'([0-9])','')"/>
    <xsl:element name="{$firstElement}">
      <xsl:value-of select="name()"/>
    </xsl:element>
    <xsl:element name="{$SecondElement}">
      <xsl:value-of select="."/>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>
于 2013-05-08T05:40:00.287 回答
0

您可以使用name()函数来获取当前元素的名称。
例如,它将返回'field1'if .is <field1>

所以模板的相应部分将是

<field><xsl:value-of select="name()" /></field>
<value><xsl:value-of select="." /></value>
于 2013-05-08T05:30:47.393 回答