根据输入xml中元素的值转换为输出xml

时间:2017-01-05 11:16:15

标签: xslt

我正在尝试学习XSLT的基础知识,但我坚持使用特定的用例。我想要实现的是将一个xml文件转换为另一个xml(我正在使用XSLT 2.0),但条件是输出xml中的元素分组由输入xml中的一个特定元素的值决定。

我将尝试通过一个简单的例子来举例说明我的问题。

让我们说这是一个输入xml:

<products>
<shoes>
    <shoe>
        <name>Ecco City</name>
        <category>Urban</category>
    </shoe>
    <shoe>
        <name>Timberland Forest</name>
        <category>Wildlife</category>
    </shoe>
    <shoe>
        <name>Asics Gel-Kayano</name>
        <category>Running</category>
    </shoe>
</shoes>
<clothes>
    <shorts>
        <name>North Face</name>
        <category>Wildlife</category>
    </shorts>
    <shorts>
        <name>Adidas Running Shorts</name>
        <category>Running</category>
    </shorts>
</clothes>

根据我想要的类别元素的值,对于每个产品,列出类似的产品,即输入xml中具有相同类别的其他产品,如下所示:

<output>
    <forSale>
        <item>Asics Gel-Kayano</item>
        <similarItem>Adidas Running Shorts</similarItem>
    </forSale>       
</output>

1 个答案:

答案 0 :(得分:0)

这似乎不是一个分组问题。如果我理解正确,你想做类似的事情:

XSLT 2.0

<?xml version="1.0" encoding="UTF-8"?>
<output>
   <forSale>
      <item>Ecco City</item>
   </forSale>
   <forSale>
      <item>Timberland Forest</item>
      <similarItem>North Face</similarItem>
   </forSale>
   <forSale>
      <item>Asics Gel-Kayano</item>
      <similarItem>Adidas Running Shorts</similarItem>
   </forSale>
   <forSale>
      <item>North Face</item>
      <similarItem>Timberland Forest</similarItem>
   </forSale>
   <forSale>
      <item>Adidas Running Shorts</item>
      <similarItem>Asics Gel-Kayano</similarItem>
   </forSale>
</output>

应用于您的输入示例,结果将是:

ed