XSLT根据其他元素获取值'值

时间:2017-10-08 09:13:25

标签: xml xslt

我有以下XML:

   <data>
      <name>att1</name>
      <value>BLUE</value>
   </data>  
   <data>
      <name>id</name>
      <value>5864828</value>
    </data>
    <data>
      <name>att2</name>
      <value>XL</value>
    </data>
    <data>
      <name>status</name>
      <value>In-Stock</value>
    </data>

我需要将其转换为:

<product>
  <id>5864828</id>
  <color>BLUE</color>
  <size>XL</size>
  <avail>In-Stock</avail>
</product>

我发现了以下问题: Concatenate XSLT element values based on another element value 但在该线程中,提供的解决方案是使用&#34; xsl-if&#34;更改属性的名称时,它并不关心更改数据的显示顺序。

所以我的问题在这里,有没有办法让我不必使用xsl-if并且实际上可以改变属性的顺序?

1 个答案:

答案 0 :(得分:0)

通过组合选择顺序中的匹配模板和(而不是f (g x) x(f=<<g) x来创建元素,可以实现所需的输出。

我发明了一个任意xsl-if元素来补偿样本xml中缺少的元素。

xsl-choose

关于xslt最常见的误解是尝试<root> - 使用匹配模板是可行的方法,但是很难表达所需的xpath来获得所需的条件。