XML 파일에 특정 패턴이 있는지 여부를 확인하는 데 XQuery를 사용할 수있는 방법/방법에 대해 생각하고 있습니다.XML에서 정의 된 시퀀스 패턴 찾기
예 : 프로세스 흐름 (StartEvent> UserTask> AutoTask> EndEvent)을 나타내는 (단순화 된) XML을 생각해보십시오.
<process>
<startEvent id="start1">
<outgoing>flow1</outgoing>
</startEvent>
<userTask id="user1">
<incoming>flow1</incoming>
<outgoing>flow2</outgoing>
</userTask>
<autoTask id="auto1">
<incoming>flow2</incoming>
<outgoing>flow3</outgoing>
</autoTask>
<endEvent id="end1">
<incoming>flow3</incoming>
</endEvent>
<flow id="flow1" source="start1" target="user1"/>
<flow id="flow2" source="user1" target="auto1"/>
<flow id="flow3" source="auto1" target="end1"/>
</process>
는 지금은 파일에있는 곳이 바로 유형의 요소 "autoTask" 뒤에 유형 "userTask"의 요소인지 여부를 확인합니다. 이 순서는 들어오고 나가는 흐름 정의를 따라 가면서 확인해야하며 문서의 순서에서 파생 될 수는 없습니다.
xquery/xpath를 사용하여이 작업을 수행 할 수있는 방법이 있습니까?
미리 감사드립니다. 정보로서,
/process/flow[@source=/process/userTask/@id and @target=/process/autoTask/@id]
을 또는 : 자손없이
//flow[@source=//userTask/@id and @target=//autoTask/@id]
또는 :
을 정말 당신의 흐름 개념을하지 않는 모든 사용자 작업을 나열합니다. 어떻게 당신의 순서입니다 이 예에서 정의 된 flow1, flow2, flow3는 어떻게 상호 연결됩니까? 그렇다면 시작 속성으로 인해 start1이라는 id를 가진 요소에서 flow1이 시작됩니다. 그러나 그곳은 어디로 갈지를 결정합니다 - 단순히 @target을 사용합니다 (따라서 "flow"에는 시작과 끝은 단지 두 지점입니까?) 그렇다면 실제로 들어오는 요소와 나가는 요소는 어떤 정보를 전달합니까? – dirkk
@dirkk : 흐름 요소와 작업 내에서 소스/대상 지정 gh 수신/발신 요소는 확실히 정보의 복제입니다. 그러나 BPMN 사양에서 요구하는 구조이므로 OP의 잘못은 아닙니다. – joergl
@joergl 나는 OP를 비판하지 않았다. 솔직히 여기서는 흐름 구문을 이해하지 못했다. 이 BPMN 사양을 모르겠습니다. – dirkk