0

以下は私のXMLファイルの構造です -

<Doc>
  <P n="1"/>
  <P>blah blah blah. <B>Pg-1</B></P>
  <P n="2"/>
  <P>blah blah blah. <B>Pg-2</B></P>
</Doc>

私はそれを変更する必要があります -

<Doc>
  <P n="1">blah blah blah. <B>Pg-1</B></P>
  <P n="2">blah blah blah. <B>Pg-2</B></P>
</Doc>

これを行う方法 ?

4

2 に答える 2

1

クエリ プロセッサが XQuery Update をサポートしている場合、これは別の解決策です。

copy $doc :=
  <Doc>
    <P n="1"/>
    <P>blah blah blah. <B>Pg-1</B></P>
    <P n="2"/>
    <P>blah blah blah. <B>Pg-2</B></P>
  </Doc>
modify (
  for $p1 in $doc/P[@n]
  let $p2 := $p1/following-sibling::P[1]
  return (
    insert node $p2/node() into $p1,
    delete node $p2
  )
)
return $doc
于 2013-11-08T12:58:13.997 に答える
1

これは少しトリッキーです。これが私が思いついたものです。より良い方法があるかどうかはわかりません。

for $pn in Doc/P[@n] 
  let $nextPn := $pn/following-sibling::P[@n]
  let $pGroup := ($pn union $pn/following-sibling::P) except ($nextPn union $nextPn/following-sibling::P)
return <P>{$pn/attribute(), $pGroup/node()}</P>
于 2013-11-08T09:50:47.593 に答える