我有以下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并且实际上可以改变属性的顺序?
答案 0 :(得分:0)
通过组合选择顺序中的匹配模板和(而不是f (g x) x
)(f=<<g) x
来创建元素,可以实现所需的输出。
我发明了一个任意xsl-if
元素来补偿样本xml中缺少的元素。
xsl-choose
关于xslt最常见的误解是尝试<root>
- 使用匹配模板是可行的方法,但是很难表达所需的xpath来获得所需的条件。