将属性值转换为xml元素

时间:2016-04-11 14:59:31

标签: xslt

使用xslt 1.0,我需要在输入xml下面转换为输出xml

- 输入xml

    $the_cat = 'latest';

    $next_post = get_next_post($in_same_term = true, $excluded_terms = '', $taxonomy = $the_cat); 

- 输出xml

<Row>
    <Column name="NUMBER" sqltype="int">123</Column>
    <Column name="DEPT1" sqltype="int">A</Column>
    <Column name="CUST_EMPTYPE" sqltype="int">1</Column>
    <Column name="CUST_TIJD" sqltype="int">31</Column>
</Row>

输入xml中的列名在设计时是未知的,列可以增长..

任何人都可以告诉我如何实现这一目标吗?

非常感谢,

1 个答案:

答案 0 :(得分:0)

是。这很简单。一个小差异是您的DEPT1来源和目标价值之间的偏差(我真的不知道IHC可能来自哪里)。我在以下XSLT代码中对其进行了协调,该代码仅将Column/@name个节点设置为具有旧EMPLOYEE内容内容的新text()元素:

<?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" />

  <xsl:template match="/Row">
    <EMPLOYEE xmlns="http:xmlns.oracle.com/Employee">
      <xsl:for-each select="Column">
        <xsl:element name="{@name}">
          <xsl:value-of select="text()" />
        </xsl:element>
      </xsl:for-each>
    </EMPLOYEE>
  </xsl:template>
</xsl:stylesheet>

结果是:

<EMPLOYEE xmlns="http:xmlns.oracle.com/Employee">
    <NUMBER>123</NUMBER>
    <DEPT1>A</DEPT1>
    <CUST_EMPTYPE>1</CUST_EMPTYPE>
    <CUST_TIJD>31</CUST_TIJD>
</EMPLOYEE>