2017-06-20 7 views
3

XQueryを使用してxmlで処理命令タグを削除するにはどうすればよいですか?Marklogic:削除処理命令タグを使用したXpath

サンプルXML:

<a> 
    <text><?test id="1" loc="start"?><b type="bold">1. </b> 
    Security or protection <?test id="1" loc=="end"?><?test id="1" loc="start"?><b type="bold">2. 
    </b> Analyse. 
    <?test id="1" loc="end"?></text> 
    </a> 

予想される出力:

<a> 
    <text><b type="bold">1. </b> Security or protection <b type="bold">2. 
    </b> Analyse.</text> 

    </a> 

が親切PIタグを削除するのに役立ちます。このような

答えて

4

何か作業をする必要があります:

xquery version "1.0-ml"; 

declare function local:suppress-pi($nodes) { 
    for $node in $nodes 
    return 
    typeswitch ($node) 
    case element() return 
     element { fn:node-name($node) } { 
     $node/@*, 
     local:suppress-pi($node/node()) 
     } 
    case processing-instruction() return() 
    default return $node 
}; 

local:suppress-pi(<a> 
    <text><?test id="1" loc="start"?><b type="bold">1. </b> 
    Security or protection <?test id="1" loc=="end"?><?test id="1" loc="start"?><b type="bold">2. 
    </b> Analyse. 
    <?test id="1" loc="end"?></text> 
    </a>) 

HTH!

+0

偉大な@grtjn ..うまく動作します。ありがとう! – Antony

関連する問題