-1

下面是 XML 结构。

<Docs>
 <Doc>
  <Title>Physics</Title>
  <Desc>
    <Part n="Part 1">
      <Chap c="1"/>
      <Chap c="2"/>
      <Chap c="4"/>
    </Part>
  </Desc>
 </Doc>
 <Doc>
  <Title>Physics</Title>
  <Desc>
    <Part n="Part 2">
      <Chap c="2"/>
      <Chap c="3"/>
      <Chap c="4"/>
    </Part>
  </Desc>
 </Doc>
</Docs>

我追求的输出如下 -

<Title>Physics,#,Part 1 - 1,2,4</Title>
<Title>Physics,#,Part 2 - 2,3,4</Title>

我尝试使用各种组合concatstring-join但都是徒劳的:(

4

1 回答 1

0

晚上晚些时候,我再次玩它并得到了答案,虽然不是我需要的确切答案,但足以满足我的需要 -

let $a :=
<Docs>
 <Doc>
  <Title>Physics</Title>
  <Desc>
    <Part n="Part 1">
      <Chap c="1"/>
      <Chap c="2"/>
      <Chap c="4"/>
    </Part>
  </Desc>
 </Doc>
 <Doc>
  <Title>Physics</Title>
  <Desc>
    <Part n="Part 2">
      <Chap c="2"/>
      <Chap c="3"/>
      <Chap c="4"/>
    </Part>
  </Desc>
 </Doc>
</Docs>


for $x in $a//Doc
return 
<Title>{
concat($x/Title,"#", 
    string-join(
        ($x/Desc/Part/@n, " - ", string-join(($x/Desc/Part/Chap/@c, ""),",")),""))
}</Title>
于 2014-09-15T07:45:05.423 回答