Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如果其所有后续元素中都有后缀,则将后缀附加到前置元素_Xml_Xslt - Fatal编程技术网

Xml 如果其所有后续元素中都有后缀,则将后缀附加到前置元素

Xml 如果其所有后续元素中都有后缀,则将后缀附加到前置元素,xml,xslt,Xml,Xslt,我想,如果组中的所有tr(item)在其td(index=1)元素的值中都有后缀,则移动(从item移除并附加到group)后缀。这意味着“[s2]”应移至A组,[s1]应移至B组 此XML应为: <table xmlns="MyNamespaceUri"> <tr type="group"> <td index="1">Group A</td> </tr> <tr type="item"> <t

我想,如果组中的所有tr(item)在其td(index=1)元素的值中都有后缀,则移动(从item移除并附加到group)后缀。这意味着“[s2]”应移至A组,[s1]应移至B组

此XML应为:

<table xmlns="MyNamespaceUri"> 
  <tr type="group"> <td index="1">Group A</td> </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A1 [s1],[s2],[s3]</td> 
    <td index="2">11</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A2 [s1],[s2]</td> 
    <td index="2">21</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A3 [s2],[s4]</td> 
    <td index="2">31</td> 
  </tr> 
  <tr type="total"> <td index="2">63</td> </tr> 

  <tr type="group"> 
    <td index="1">Group B</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B1 [s1],[s2],[s3]</td> 
    <td index="2">12</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B2 [s1],[s3]</td> 
    <td index="2">22</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B3 [s1],[s4]</td> 
    <td index="2">32</td> 
  </tr> 
  <tr type="total"> <td index="2">66</td> </tr> 
</table>
<table xmlns="MyNamespaceUri"> 
  <tr type="group"> <td index="1">Group A [s2]</td> </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A1 [s1],[s3]</td> 
    <td index="2">11</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A2 [s1]</td> 
    <td index="2">21</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A3 [s4]</td> 
    <td index="2">31</td> 
  </tr> 
  <tr type="total"> <td index="2">63</td> </tr> 

  <tr type="group"> 
    <td index="1">Group B [s1]</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B1 [s2],[s3]</td> 
    <td index="2">12</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B2 [s3]</td> 
    <td index="2">22</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B3 [s4]</td> 
    <td index="2">32</td> 
  </tr> 
  <tr type="total"> <td index="2">66</td> </tr> 
</table>

A组
项目类型A1[s1]、[s2]、[s3]
11
项目类型A2[s1]、[s2]
21
项目类型A3[s2]、[s4]
31
63
B组
项目类型B1[s1]、[s2]、[s3]
12
项目类型B2[s1]、[s3]
22
项目类型B3[s1],[s4]
32
66
像这样变换:

<table xmlns="MyNamespaceUri"> 
  <tr type="group"> <td index="1">Group A</td> </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A1 [s1],[s2],[s3]</td> 
    <td index="2">11</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A2 [s1],[s2]</td> 
    <td index="2">21</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A3 [s2],[s4]</td> 
    <td index="2">31</td> 
  </tr> 
  <tr type="total"> <td index="2">63</td> </tr> 

  <tr type="group"> 
    <td index="1">Group B</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B1 [s1],[s2],[s3]</td> 
    <td index="2">12</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B2 [s1],[s3]</td> 
    <td index="2">22</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B3 [s1],[s4]</td> 
    <td index="2">32</td> 
  </tr> 
  <tr type="total"> <td index="2">66</td> </tr> 
</table>
<table xmlns="MyNamespaceUri"> 
  <tr type="group"> <td index="1">Group A [s2]</td> </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A1 [s1],[s3]</td> 
    <td index="2">11</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A2 [s1]</td> 
    <td index="2">21</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type A3 [s4]</td> 
    <td index="2">31</td> 
  </tr> 
  <tr type="total"> <td index="2">63</td> </tr> 

  <tr type="group"> 
    <td index="1">Group B [s1]</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B1 [s2],[s3]</td> 
    <td index="2">12</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B2 [s3]</td> 
    <td index="2">22</td> 
  </tr> 
  <tr type="item"> 
    <td index="1"> Item Type B3 [s4]</td> 
    <td index="2">32</td> 
  </tr> 
  <tr type="total"> <td index="2">66</td> </tr> 
</table>

A组[s2]
项目类型A1[s1]、[s3]
11
项目类型A2[s1]
21
项目类型A3[s4]
31
63
B组[s1]
项目类型B1[s2]、[s3]
12
项目类型B2[s3]
22
项目类型B3[s4]
32
66
非常感谢

编辑:

作为XSL/T的新手,在这方面工作了几天之后,我得到了以下信息。我无法使“替换”功能正常工作;正在抛出一个找不到的函数或有效异常(尽管我已更改为2.0版);然后尝试翻译(这不适用于此问题)


您面临的最大挑战是输入xml结构,这是我将要解决的唯一挑战(也就是说,其余问题由您决定)。实际上,您拥有的是一个包含10行的表,但是您需要将这些行的子集组合在一起,以便可以隔离属于组a的行和属于组b的行。很难想出能做到这一点的
XPath
s,但这并非不可能

例如,此模板将
tr
组的项目隔离在变量中,然后复制变量:

<xsl:template match="a:table/a:tr[@type='group']">
    <xsl:variable name="trs" select="following-sibling::a:tr[ . &lt;&lt; current()/following-sibling::a:tr[@type='total'][1]]" />

    <xsl:copy-of select="$trs" />
</xsl:template>

如果你在提出问题之前向人们表明你已经对手头的任务做了一些努力或研究,那么他们更可能会帮助你——我们是来帮助你的,但我们不是来为你做的。问题表明,绝对没有任何研究或尝试。我已经包括了我到目前为止所做的,不能再进一步了