我有一个 xml 文件:
<PRODUCTS>
<PRODUCT>
<NAME_EN>jacket</NAME_EN>
<SKU>1</SKU>
<SIZE>
<CODE>01 </CODE>
<DESCRIPTION>34</DESCRIPTION>
</SIZE>
<COLOR>
<DESCRIPTION_EN>black</DESCRIPTION_EN>
</COLOR>
</PRODUCT>
<PRODUCT>
<NAME_EN>jacket</NAME_EN>
<SKU>2</SKU>
<SIZE>
<CODE>02</CODE>
<DESCRIPTION>35</DESCRIPTION>
</SIZE>
<COLOR>
<DESCRIPTION_EN>black</DESCRIPTION_EN>
</COLOR>
</PRODUCT>
<PRODUCT>
<NAME_EN>shoes</NAME_EN>
<SKU>3</SKU>
<SIZE>
<CODE>01</CODE>
<DESCRIPTION>34</DESCRIPTION>
</SIZE>
<COLOR>
<DESCRIPTION_EN>black</DESCRIPTION_EN>
</COLOR>
</PRODUCT>
</PRODUCTS>
我想使用 xsl 转换来实现这样的结果:
<catalog>
<product>
<variants>
<variant>
<sku>1</sku>
<options>
<option>
<code>size</code>
<value>34</value>
</option>
</options>
</variant>
<variant>
<sku>2</sku>
<options>
<option>
<code>size</code>
<value>35</value>
</option>
</options>
</variant>
</variants>
</product>
<product>
<variants>
<variant>
<sku>3</sku>
<options>
<option>
<code>size</code>
<value>34</value>
</option>
</options>
</variant>
</variants>
</product>
</catalog>
我需要的是在所有节点上 for-each名称相同的位置NAME_EN
和位置。COLOR/DESCRIPTION_EN
我知道这样的for-each:
<xsl:for-each select="PRODUCTS/PRODUCT[NAME_EN='jacket']">
但它不会为我分叉。有什么办法可以做到这一点?