通过xslt创建带动态标记的xml

时间:2014-04-15 10:54:09

标签: xml xslt

这就是我的xml的样子:

<pkt>
    <row name="ARENDEN" actn="M">
        <col name="ARNR" type="num" val="82844316"/>
        <col name="KUNDNR" type="num" val="290125"/>
    </row>
</pkt>

我编写了一个XSLT样式集,将其转换为

<col>ARNR</col>
<col>KUNDNR</col>

ARNR应代替tag,basicaly标签应使用列名动态定义,val将是source-example的值。

<ARNR>82844316</ARNR>

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

示例XML输入:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <pkt>
    <row name="ARENDEN" actn="M">
      <col name="ARNR" type="num" val="82844316"/>
      <col name="KUNDNR" type="num" val="290125"/>
    </row>
  </pkt>
  <pkt>
    <row name="HEINZ" actn="M">
      <col name="HNZ" type="num" val="465798"/>
      <col name="PRODNR" type="num" val="321654"/>
    </row>
  </pkt>
</root>


XSLT样式表:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <output>
      <xsl:apply-templates select="root/pkt/row"/>
    </output>
  </xsl:template>

  <xsl:template match="row">
    <entry>
      <xsl:apply-templates select="col"/>
    </entry>
  </xsl:template>

  <xsl:template match="col">
    <xsl:element name="{@name}">
      <xsl:value-of select="@val"/>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>


输出:

<?xml version="1.0" encoding="utf-8"?>
<output>
  <entry>
    <ARNR>82844316</ARNR>
    <KUNDNR>290125</KUNDNR>
  </entry>
  <entry>
    <HNZ>465798</HNZ>
    <PRODNR>321654</PRODNR>
  </entry>
</output>