2016-09-05 2 views
0

XQuery를 사용하여 태그를 기반으로 공통 요소를 반환하는 데 문제가 있습니다. 공통 요소를 반환하는 XQ 함수를 작성하려고합니다. $ schoolAXQuery를 사용하여 공통 요소 가져 오기

<schoolA> 
    <name>ABC</name> 
    <students>1000</students> 
    <classes>25</classes> 
</schoolA> 
<schoolA> 
    <name>DEF</name> 
    <students>1200</students> 
    <classes>20</classes> 
</schoolA> 
<schoolA> 
    <name>GHY</name> 
    <students>900</students> 
    <classes>30</classes> 
</schoolA> 

같은 다른 하나 : $ schoolB

<schoolB> 
    <name>ABC</name> 
    <students>1000</students> 
    <classes>25</classes> 
</schoolB> 
<schoolB> 
    <name>DEF</name> 
    <students>1200</students> 
    <classes>20</classes> 
</schoolB> 
<schoolB> 
    <name>XYZ</name> 
    <students>1100</students> 
    <classes>30</classes> 
</schoolB> 

기능은 반환해야합니다 : $ commonSchool

<schoolA> 
    <name>ABC</name> 
    <students>1000</students> 
    <classes>25</classes> 
</schoolA> 
<schoolA> 
    <name>DEF</name> 
    <students>1200</students> 
    <classes>20</classes> 
</schoolA> 

매칭 예를 들어 나는 같은 XML을 factor는 이름입니다. 중첩 된 for 루프를 작성하려고하지만 변수에 요소를 추가하려고합니다. 그것을하는 방법에 어떤 실마리는 중대 할!

+1

숙제를 요청하는 질문에는 문제를 해결하기 위해 수행 한 작업 요약과 문제 해결에 대한 설명이 포함되어야합니다. http://stackoverflow.com/help/on-topic을 참조하십시오. – joewiz

+0

XQuery 1.0 또는 3.0/3.1? 3.0/3.1에서는 새로운 "그룹화"구문을 사용할 수 있습니다. –

답변

1

이 XQuery 함수는 <name> 요소의 값에 따라 두 개의 요소 시퀀스를 찾습니다. 단순함을 가정하면 <schools>이라는 래퍼에 두 세트의 학교 요소를 래핑했습니다.

이것은 XQuery 1.0에서 작동합니다.

declare namespace _="http://local/funcs"; 

declare function _:munge($schoolA as element()*, $schoolB as element()*) { 
    $schoolA[name=$schoolB/name] 
}; 

_:munge(schools/schoolA, schools/schoolB) 
+0

또는 더 간단히 말해서 함수의 본문은'$ schoolA [name = $ schoolB/name] '이 될 수 있습니다. –

+0

불행히도 응용 프로그램은 v1.0을 사용합니다. 나는 제안을 시도 할 것이다! 감사! –

+0

이 기능을 자체 통합 예제로 변경하여 Michael의 개선과 XQuery 1.0 호환성 확인 – Chondrops