使用线性xml结构XSLT创建父子节点

时间:2018-03-17 15:46:40

标签: xml xslt

我正在尝试将线性XML结构转换为父子结构。 线程XML结构是:

<?xml version='1.0' encoding='UTF-8'?>
<MESSAGE>
  <ORDER>
   <NAME>HEADER</NAME>
   <ORDER_NO>100</ORDER_NO>
   <ADDRESS>Posted</ADDRESS>
  </ORDER>
  <ORDER>
   <NAME>DETAIL</NAME>
    <LINE_NO>1</LINE_NO>
   <QTY>1</QTY>
  </ORDER>
  <ORDER>
   <NAME>DETAIL</NAME>
   <QTY>1</QTY>
   <LINE_NO>2</LINE_NO>
  </ORDER>
  <ORDER>
   <NAME>DETAIL</NAME>
   <QTY>2</QTY>
   <LINE_NO>3</LINE_NO>
  </ORDER>
  <ORDER>
   <NAME>HEADER</NAME>
   <ORDER_NO>200</ORDER_NO>
   <ADDRESS>Posted</ADDRESS>
  </ORDER>
   <ORDER>
   <NAME>DETAIL</NAME>
   <QTY>3</QTY>
   <LINE_NO>1</LINE_NO>
  </ORDER>
  <ORDER>
   <NAME>DETAIL</NAME>
   <LINE_NO>1</LINE_NO>
   <QTY>3</QTY>
  </ORDER>
</MESSAGE>

每个节点都有一个项目,用于区分节点是标题或详细信息。例如,具有NAME = DETAIL的元素是详细信息节点,NAME = HEADER被视为标题。

输出xml应该看起来像

<?xml version='1.0' encoding='UTF-8'?>
<MESSAGE>
  <ORDER>
   <NAME>HEADER</NAME>
   <ORDER_NO>100</ORDER_NO>
   <ADDRESS>Posted</ADDRESS>
       <ORDER_LINE>
       <NAME>DETAIL</NAME>
        <LINE_NO>1</LINE_NO>
       <QTY>1</QTY>
      </ORDER_LINE>
      <ORDER_LINE>
       <NAME>DETAIL</NAME>
       <QTY>1</QTY>
       <LINE_NO>2</LINE_NO>
      </ORDER_LINE>
      <ORDER_LINE>
       <NAME>DETAIL</NAME>
       <QTY>2</QTY>
       <LINE_NO>3</LINE_NO>
      </ORDER_LINE>
  </ORDER>
  <ORDER>
   <NAME>HEADER</NAME>
   <ORDER_NO>200</ORDER_NO>
   <ADDRESS>Posted</ADDRESS>
       <ORDER_LINE>
       <NAME>DETAIL</NAME>
       <QTY>3</QTY>
       <LINE_NO>1</LINE_NO>
      </ORDER_LINE>
      <ORDER_LINE>
       <NAME>DETAIL</NAME>
       <LINE_NO>1</LINE_NO>
       <QTY>3</QTY>
      </ORDER_LINE>
  </ORDER>
</MESSAGE>

任何人都可以帮助我使用XSLT 1.0进行转换吗?

0 个答案:

没有答案