将聊天表从一个元素制作到另一个元素



输入文件:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>
<notice>100</notice>
<chat>10, 20, 30, 40</chat>
</a>
<a>
<notice>101</notice>
<chat>40, 50, 60</chat>
</a>
<a>
<notice>102</notice>
<chat>10, 30, 60</chat>
</a>
<a>
<notice>103</notice>
<chat>70, 10, 20</chat>
</a>
</root>

我的要求是创建一个聊天条目并找到受影响的通知,如以下示例所示:

<a>
<chat>10</chat>
<notice>100, 102, 103</notice>    
</a>
<a>
<chat>20</chat>
<notice>100, 103</notice>    
</a>
<a>
<chat>30</chat>
<notice>100, 102</notice>    
</a>

注意:我必须使用 1.0 版本的 XSLT。

如果您确实仅限于 XSLT 1.0,则必须分三个步骤执行此操作:

  1. 标记chat值。理想情况下,在此步骤结束时,您 将有一个包含以下内容的变量:

    <item notice="100" chat="10"/>
    <item notice="100" chat="20"/>
    <item notice="100" chat="30"/>
    <item notice="100" chat="40"/>
    <item notice="101" chat="40"/>
    <item notice="101" chat="50"/>
    <item notice="101" chat="60"/>
    <item notice="102" chat="10"/>
    <item notice="102" chat="30"/>
    <item notice="102" chat="60"/>
    <item notice="103" chat="70"/>
    <item notice="103" chat="10"/>
    <item notice="103" chat="20"/>
    
  2. 使用 EXSLTexsl:node-set()函数(或 支持的其他类似函数)将变量转换为节点集您的处理器)。

  3. 使用明基安分组按chat属性对项目进行分组

这里有很多示例显示了如何执行每个步骤。如果您遇到问题,请发布特定问题。

请注意,某些 XSLT 处理器支持一些扩展函数,这些函数在这里可能会有所帮助 - 特别是:str:tokenize()set:distinct()

最新更新