MobileTogether은 XPath를 수식 및 표현식 언어로 사용합니다.
엑셀 스프레드시트에서 수식을 작성하는 방법을 알고 있다면, MobileTogether에서 XPath 수식이나 표현식을 작성하는 방법을 쉽게 배울 수 있습니다. 몇 가지 기본적인 개념만 이해하면 됩니다. MobileTogether의 XPath 생성 도구는 엑셀의 수식 생성 도구가 스프레드시트에서 수식을 작성하는 데 도움을 주는 것처럼, XPath 표현식을 쉽게 만들 수 있도록 도와줍니다.
XPath에서 "X"는 XML(eXtensible Markup Language, 확장 가능한 마크업 언어)이라는 기원에서 유래했으며, "Path"는 데이터의 개별 항목을 식별하기 위해 경로와 유사한 형식을 사용한다는 사실에서 비롯되었습니다. MobileTogether에서 액세스하는 모든 데이터 소스는 "페이지 소스" 섹션에서 MobileTogether 디자이너 창의 오른쪽 부분에 작은 트리 구조로 표시됩니다. 각 트리 구조는 이름이 지정된 루트 노드(예: $XML1 또는 $DB1)로 시작하며, 그 아래에는 개별 데이터 항목, 즉 "요소"들이 위치합니다. 이러한 요소들은 논리적인 방식으로 중첩되어 있으며, 따라서 각 요소를 축소 및 확장하여 그 안에 포함된 내용을 확인할 수 있는 트리 형태로 표현하는 것이 가장 효과적입니다. MobileTogether의 가장 큰 장점은 다음과 같습니다. 데이터가 데이터베이스, XML 문서, 웹 서비스 또는 다른 데이터 소스에서 제공되더라도, 모든 데이터는 동일한 방식으로 표시되며 동일한 방식으로 액세스할 수 있습니다.
XPath를 사용하면 이러한 트리 구조를 탐색하여 모바일 기기의 화면에 있는 사용자 인터페이스 객체와 데이터를 연결할 수 있습니다. 이는 컴퓨터의 하드 드라이브에서 파일 시스템의 디렉토리 트리를 탐색하는 방식과 매우 유사합니다. Windows, Linux, macOS 등 어떤 운영체제를 사용하시든, 하드 드라이브의 파일은 항상 경로를 통해 접근할 수 있습니다. 예를 들어:
C:\Users\Spock\Documents\ScienceRecords (Windows)
/Users/Kirk/Documents/BeautifulAlienWomen (Linux/Mac)
자, 비교를 통해 XPath 표현식의 예시를 살펴보겠습니다
$DB1/salesdata/region/month/gadgets보시다시피, 이는 완전히 동일한 개념입니다. XPath는 데이터 트리 구조를 탐색하는 데 사용되며, 이는 컴퓨터의 하드 드라이브에서 파일 시스템을 탐색할 때 사용하는 경로 표현식과 동일한 방식으로 작동합니다. XPath는 리눅스 및 macOS에서 디렉터리를 구분하는 데 사용하는 "/" (슬래시) 문자를 사용하여 경로 상의 개별 요소를 구분합니다.
흥미롭게도, 이 비유는 XPath에서 매우 흔하게 사용되는 두 가지 약어에도 적용됩니다. 파일 시스템에서 단일 점(.)이 현재 디렉터리를 나타내는 것처럼, XPath에서 점(.)은 현재 요소를 나타냅니다. 마찬가지로, 파일 시스템에서 이중 점(..)이 상위 디렉터리를 나타내는 것처럼, XPath에서도 이중 점(..)은 상위 요소를 나타냅니다.
데이터 소스가 XML 문서이거나 웹 서비스에서 반환되는 XML 데이터인 경우, 해당 트리 구조에 포함된 데이터는 크게 두 가지 형태로 존재합니다. 바로 요소(elements)와 속성(attributes)입니다. 요소는 XML에서 핵심적인 데이터 항목이며, 중첩될 수 있습니다. 따라서 하나의 요소는 트리 구조 내에서 자식 요소를 가질 수 있습니다. 반면, 속성은 요소에 연결된 간단한 데이터 값입니다. "페이지 소스"에서 확인하실 수 있듯이, 속성은 이름 앞에 "=" (등호) 기호가 붙어 표시됩니다. 이는 XML 문서에서 속성이 "color="green""과 같이 작성되기 때문입니다.
XPath 표현식에서 속성에 대해 언급하려면, 해당 속성 이름 앞에 "@" 기호를 붙여야 합니다
$XML1/salesdata/region/@name그렇지 않으면, 요소와 속성을 동일하게 사용할 수 있습니다. 즉, 계산에 모두 사용할 수 있으며, 차트에서 그 값들을 시각화할 수도 있습니다. 또한, MobileTogether 디자인에서 사용자 인터페이스 객체에 모두 할당할 수 있습니다.
때로는 데이터 내의 특정 요소 경로만 지정하는 것만으로는 충분하지 않습니다. 실제로 원하는 것은 특정 기준에 맞는 데이터의 일부를 선택하여, 예를 들어 그래프로 표시하거나 사용자에게 표 형태로 제공하는 것입니다.
만약 관계형 데이터베이스를 사용해 본 경험이 있다면, 이는 SQL 문에서 일반적으로 사용되는 WHERE 절과 유사합니다. 이를 통해 데이터베이스에서 특정 조건을 만족하는 데이터를 선택할 수 있습니다
XPath에서 이와 동등한 개념은 "조건(Predicates)"이라고 불립니다. XPath 조건은 특정 요소를 선택하는 기준을 지정하며, 지정된 기준에 부합하는 요소만 선택할 수 있도록 합니다. 조건은 "[ ]" (대괄호) 안에 논리적인 테스트를 포함하여 입력됩니다. 예를 들어:
$XML1/salesdata/region[@name=”East”]/Month이 문장을 해석하는 방법은 다음과 같습니다. "$XML1" 데이터 소스에서 "salesdata" 요소를 찾은 다음, 그 하위 요소인 "region"으로 이동합니다. 여기서 속성 이름이 "East"와 동일한 지역만 선택하고, 선택된 각 지역에 해당하는 하위 요소인 "Month"를 선택합니다.
처음에 말씀드린 것처럼, XPath는 완전한 표현 언어입니다. 즉, XPath는 특정 데이터를 선택하는 것뿐만 아니라, 데이터를 사용하여 새로운 값을 계산하는 데 필요한 모든 일반적인 수학 연산을 수행할 수 있습니다. 엑셀에서 수식을 사용하여 기존 데이터를 기반으로 새로운 값을 계산하는 것처럼, MobileTogether에서 XPath 표현식을 사용하여 정확히 동일한 작업을 수행할 수 있습니다.
만약 모바일 청구 솔루션을 개발하고, 모바일 폼에서 각 항목의 총액을 표시하고 싶다면, 다음과 같은 방법을 고려할 수 있습니다
$DB1/sales/invoice/item/quantity * $DB1/sales/invoice/item/price
데이터 구조가 수량과 가격을 별도의 요소로 구분하고, 사용자가 이 가격을 수정할 수 있다고 가정하면, 위에서 설명한 곱셈 방법을 사용하여 해당 항목의 총액을 간단하게 계산할 수 있습니다. 여기서 곱셈 기호 *를 사용합니다.
XPath의 매우 유용한 기능 중 하나는 경로 내에서 곱셈 연산을 괄호를 사용하여 직접 수행할 수 있다는 점입니다. 이렇게 하면 불필요한 입력 작업을 줄일 수 있으며, 위 표현과 동일한 결과를 얻을 수 있습니다
$DB1/sales/invoice/item/(quantity * price)마찬가지로, "+" (플러스)와 "-" (마이너스)를 수학 연산자로 사용할 수 있습니다. 하지만 나눗셈에는 다른 기호를 사용해야 합니다. 왜냐하면 우리는 이미 "/" (슬래시)를 사용하여 경로 상의 개별 요소들을 구분하고 있기 때문에, 같은 기호를 나눗셈에 사용할 수 없습니다. 따라서 XPath에서 나눗셈 연산자는 실수 나눗셈의 경우 "div"이고, 정수 나눗셈의 경우 "idiv"입니다 (즉, 결과가 실수 대신 정수(또는 정수)가 되도록 하고 싶을 때 사용합니다).
또한, 연산자 주변에 공백을 추가하는 것은 좋은 습관이며, 때로는 필수적입니다. 이렇게 하면 연산자가 요소 또는 속성 이름의 일부로 오해되는 것을 방지할 수 있습니다. 특히 빼기(-) 연산자의 경우 더욱 그렇습니다.
XPath와 디렉토리 경로의 중요한 차이점은, 디렉토리 경로 표현식은 일반적으로 특정 파일이나 디렉토리 하나만을 가리키는 반면, XPath 표현식은 실제로 여러 데이터 노드(즉, 요소 또는 속성)를 참조할 수 있다는 것입니다. 사실, 모든 XPath 표현식은 항상 결과로 노드들의 순서를 반환합니다.
대부분의 데이터베이스는 유사한 구조를 가진 데이터 행들로 구성되어 있으며, 마찬가지로 대부분의 XML 문서도 기본적으로 동일한 이름을 가진 요소들의 집합으로 구성되어 있습니다. XPath는 개발자가 이러한 데이터 집합을 쉽게 처리할 수 있도록 만들어졌습니다. 따라서, XPath를 사용하면 전체 노드 집합을 한 번에 처리할 수 있는데, 이는 다음 몇 장에서 살펴볼 때 큰 이점을 제공합니다.
동시에, 때로는 XPath 표현식에서 특정 순서를 명시적으로 정의해야 할 경우가 있으며, 이 경우 다음과 같은 형식으로 값을 나열하여 정의할 수 있습니다
(1, 2, 3, 4, 5)
순서는 정해져 있으므로, 위 순서는 (3, 5, 2, 4, 1)과 같은 순서와는 명확히 다릅니다. 순서에는 데이터의 노드뿐만 아니라, 상수 숫자 값이나 상수 문자열 값도 포함될 수 있습니다.
예를 들어, 문자열의 가능한 순서는 다음과 같을 수 있습니다
("a", "b", "c", "d", "e")마지막으로, 하지만 매우 중요한 점은, 범위 연산자를 사용하여 숫자 값의 특정 순서를 지정할 수 있습니다
(1 to 5)
이는 (1, 2, 3, 4, 5)과 같은 수열과 같습니다. 보시다시피, 이 범위 연산자는 숫자가 커질수록 일일이 나열하기에는 번거로운 수열을 빠르고 쉽게 생성하는 데 사용할 수 있습니다.
과거 다른 프로그래밍 언어를 사용해 보신 분이라면, "for" 루프가 대부분의 현대적인 언어에서 다양한 형태로 존재하며, 매우 흔하게 사용되는 도구라는 것을 인지하실 것입니다. 또한, "for" 루프는 XPath 표현식 언어의 중요한 구성 요소이기도 합니다.
XPath에서 "for" 표현식은 가장 기본적인 형태로, 임시 루프 변수를 사용하여 값 또는 노드들의 순서를 반복적으로 처리할 수 있도록 해줍니다. 이 변수는 "for" 표현식 내에서 직접 정의됩니다. 예를 들어, 다음과 같은 표현식이 있습니다
for $i in (1 to 10) return 2 * $i
이 코드는 원래 수열 (1부터 10까지)을 순회하면서 변수 $i를 사용하여 각 데이터 포인트에 대해 2 * $i를 계산함으로써 숫자 수열 (2, 4, 6, 8, 10, 12, 14, 16, 18, 20)을 생성합니다.
이제 어떤 XPath 표현식이라도 노드들의 순서를 반환할 수 있다는 것을 알았으므로, `for` 표현식을 사용하여 해당 노드들을 순회하고 수학적인 연산을 수행할 수 있습니다. 예를 들어, 송장에 있는 모든 항목을 순회하고 각 항목에 대한 금액을 계산하려면 다음과 같은 표현식을 사용할 수 있습니다
for $x in $DB1/sales/invoice/item return $x/price * $x/quantity
이 경우, `$x`는 반복 변수로, 각 항목 요소에 대해 반복 작업을 수행하며, 이 표현식은 송장에 포함된 각 항목의 금액을 담은 시퀀스를 반환합니다. 예를 들어, 송장 소스 데이터에 다음과 같은 두 개의 항목 요소가 있다고 가정해 보겠습니다
<item><quantity>5</quantity>
<price>12.50</price>
</item><item><quantity>3</quantity>
<price>27.85</price>
</item>이후에 사용된 XPath 표현식은 (62.5, 83.55)이라는 값을 반환하게 되는데, 이 값들은 각각 송장에 기재된 각 항목에 해당하는 금액입니다.
XPath에서 함수는 엑셀 수식이나 대부분의 다른 프로그래밍 언어에서 사용되는 함수와 동일하게 작동합니다. 함수를 호출하려면 함수 이름과 함께 괄호() 안에 함수 매개변수를 전달해야 합니다. 예를 들어, 숫자 시퀀스 (3, 9, 14)의 합계를 구하려면 다음과 같이 작성합니다
sum( (3, 9, 14) )이렇게 하면 결과는 26이 됩니다. 이 경우, 괄호는 `sum()` 함수 호출의 일부이며, 안쪽 괄호는 함수에 단일 매개변수로 전달되는 수열의 일부입니다.
마찬가지로, 이전 예시에서 언급된 송장 총액은 모든 항목의 금액을 합산하여 계산할 수 있습니다
sum( for $x in $DB1/sales/invoice/item
return $x/price * $x/quantity )
이는 매우 유용할 수 있습니다. 예를 들어, 모바일 솔루션 내부에 대화형 양식을 만들 때, 사용자가 양식에 데이터를 입력함에 따라 실시간으로 변동되는 총합 값을 표시할 수 있습니다.
XPath는 숫자 값(예: 반올림, 절대값, 내림), 문자열 조작(예: 연결, 소문자 변환, 포함 여부 확인, 대체), 기간, 날짜, 시간, 그리고 시퀀스에 대한 집계 연산(예: 개수, 합계, 평균, 최소값, 최대값) 등 다양한 내장 함수를 제공합니다. MobileTogether의 XPath 빌더는 이러한 함수를 사용하여 XPath 표현식을 쉽게 작성할 수 있도록 설계되었습니다. 이 빌더는 사용 가능한 모든 함수에 대한 편리한 목록을 제공하며, 각 함수에 대한 간략한 설명과 필요한 매개변수에 대한 정보를 포함하고 있습니다. 함수들은 논리적인 그룹으로 구성되어 있어, 특정 용도에 필요한 함수를 쉽게 찾을 수 있습니다.
프로그래밍 언어뿐만 아니라 표현 언어에서도 특정 조건을 만족하는지 여부에 따라 다른 방식으로 결과를 계산해야 하는 경우가 많습니다. 이때 "if" 문이 사용되는데, 이 문을 사용하면 사용자가 지정한 특정 조건을 기반으로 다양한 결과를 정의할 수 있습니다.
XPath에서 if 문은 다음과 같은 형태를 갖습니다
if ( test-expression ) then expression else expression
여기서 "test-expression"은 참 또는 거짓을 반환하는 논리적인 XPath 표현식을 의미합니다.
예를 들어, MobileTogether에서 특정 데이터 내의 숫자 값에 따라 레이블이나 입력 필드의 텍스트 색상을 변경하는 기능을 구현할 수 있습니다. 데이터 소스에서 가져온 특정 요소가 입력 필드와 연결되어 있다고 가정해 보겠습니다. 해당 입력 필드를 선택하고 속성 탭으로 이동한 다음, "텍스트 색상" 속성을 선택할 수 있습니다. 색상 선택 도구를 사용하는 대신, 도구 모음의 XPath 아이콘을 클릭하고, XPath 표현식을 사용하여 해당 입력 필드의 텍스트 색상을 정의할 수 있습니다
if ( $MT_ControlValue >= 0 ) then "green" else "red"
여기서는 MobileTogether에 내장된 변수 중 하나를 사용하여 현재 컨트롤을 참조하고 있으며, 해당 값의 크기가 0보다 크거나 같은지 확인하고 있습니다.
해당 테스트의 결과에 따라 결과는 "녹색" 또는 "빨간색"으로 표시되며, 사용자 입력에 따라 텍스트 색상이 실시간으로 변경됩니다.
마찬가지로, `$MT_`로 시작하는 다양한 내장 변수들이 존재하며, 이를 통해 기기의 화면 크기, 운영 체제, 언어 등 다양한 요소를 기반으로 의사 결정을 내릴 수 있습니다. 이러한 모든 내장 전역 변수는 MobileTogether Designer의 프로젝트 메뉴에서 제공되는 "전역 변수" 대화 상자에서 확인할 수 있습니다.
지금까지 우리는 주로 역사적인 이유로 XPath에 대해 이야기해 왔습니다. 왜냐하면 XPath는 XML 기반 표현 언어 중 더 널리 알려져 있으며, 15년 동안 사용되어 왔기 때문입니다. 하지만 XPath 외에도 MobileTogether는 더욱 강력한 XQuery 언어를 지원합니다. XQuery는 XPath의 완전한 상위 집합이며, 즉 모든 유효한 XPath 표현식은 유효한 XQuery 표현식으로도 간주됩니다. 그러나 XQuery는 몇 가지 추가적인 강력한 기능을 제공하여 훨씬 더 많은 작업을 수행할 수 있게 해주고, XML 문서를 실시간으로 조작하거나 생성할 수 있도록 합니다.
가장 중요한 XQuery 표현식은 "FLWOR" 표현식이라고 불리는 것입니다. FLWOR은 "For-Let-Where-Order-Return"의 약자로, 일반적으로 "플라워"라고 발음합니다. 이는 FROM, WHERE, ORDER BY 등 유사한 구문을 가진 SQL의 SELECT 문과 기능적으로 동일하며, XML 및 데이터베이스 데이터를 훨씬 더 효율적이고 강력하게 쿼리할 수 있도록 해줍니다. FLWOR 표현식은 XQuery의 핵심 구성 요소입니다.
이전에 XPath에 대해 논의하면서 이미 "for" 부분을 접했으므로, FLWOR 표현식의 해당 부분은 익숙하게 느껴질 것입니다. 마찬가지로, 이전에도 동일한 "for" 표현식에서 "return" 절을 보았습니다. 그러나 XQuery는 "return" 절의 유연성을 크게 확장하여, 생성자를 사용하여 처음부터 전체 XML 트리를 만들 수 있도록 합니다. 기본적으로, 이전과 마찬가지로 "return" 절은 "for" 루프의 각 항목에 대해 평가되지만, 단순히 일련의 값 하나를 생성하는 대신, 이제 전체 XML 하위 트리를 구축할 수 있습니다. 아래의 예시들을 통해 이를 확인할 수 있습니다.
FLWOR 표현식에서 `let` 절의 목적은 나중에 결과를 생성하는 데 사용할 수 있는 추가 변수를 정의하는 것입니다. 이 변수는 동일한 데이터 소스에서 가져올 수도 있고, 심지어 다른 데이터 소스에서 가져올 수도 있습니다. 예를 들어, 루프 변수를 사용하여 다른 데이터 소스에서 특정 요소들을 선택할 수 있습니다.
예를 들어, 하나의 데이터 소스에 조직 내 부서에 대한 정보가 포함되어 있고, 다른 데이터 소스에 직원 정보가 포함되어 있다면, 다음과 같은 FLWOR 표현식을 사용하여 특정 부서에 속한 직원들을 선택할 수 있습니다
for $d in $DEPARTMENTS/depts/deptno
let $e := $EMPLOYEES/emps/emp[deptno = $d]
…
"WHERE" 절을 사용하면 특정 기준에 따라 데이터를 필터링할 수 있습니다. 이는 이전에도 순수한 XPath 표현식에서 "predicate"를 사용했던 방식과 유사합니다. 예를 들어, 부서의 직원 수를 기준으로 부서를 필터링할 수 있습니다
for $d in $DEPARTMENTS/depts/deptno
let $e := $EMPLOYEES/emps/emp[deptno = $d]
where count($e) >= 10
…
마지막으로, "ORDER BY" 절을 사용하면 원하는 기준으로 결과를 정렬할 수 있으며, 이는 특히 새로운 XML 문서를 생성할 때 매우 유용합니다.
이제 앞서 언급한 부서 및 직원 데이터를 활용하여 전체 FLWOR 표현식을 구성해 보겠습니다. 예를 들어, 직원 수와 평균 급여에 대한 집계 정보를 제공하는 새로운 데이터 테이블을 생성하여 모바일 솔루션에 표시할 수 있습니다. 이 데이터 테이블은 직원 수가 10명 이상인 부서에 대한 정보를 제공할 수 있습니다
for $d in $DEPARTMENTS/depts/deptno
let $e := $EMPLOYEES/emps/emp[deptno = $d]
where count($e) >= 10
order by avg($e/salary) descending
return<big-dept> { $d,<headcount>{count($e)}</headcount>,
<avgsal>{avg($e/salary)}</avgsal>
}
</big-dept>또 다른 예로, 이전에 수집한 이동통신 요금 내역 데이터(세부 항목 포함)를 활용하여, 특정 날짜 이후의 여러 건의 요금 내역을 순차적으로 처리하여 총액을 계산하고, 그 결과를 정렬하여 가장 큰 총액을 가진 요금 내역부터 가장 작은 총액을 가진 요금 내역 순으로 표를 만들어 보여줄 수 있습니다
for $inv in $DB1/sales/invoice
let $total := sum (for $x in item return $x/price * $x/quantity)
where $inv/date >= "2014-01-01"
order by $total descending
return <invtotal>{ $total }</invtotal>
보시다시피, 이러한 XQuery 표현식은 이전에는 XPath만으로는 달성할 수 없었던 훨씬 더 큰 유연성과 강력함을 제공합니다. 하지만 더 강력해진 기능에는 복잡성 증가도 따르므로, XQuery를 완전히 익숙해지는 데는 시간이 걸릴 수 있습니다.
동시에, MobileTogether에 내장된 XPath 및 XQuery 생성 및 평가 도구는 올바른 표현식을 작성하고 데이터를 사용하여 테스트하는 데 큰 도움을 줄 수 있습니다. 또한, MobileTogether 디자이너에서 모바일 앱을 직접 실행할 수 있는 강력한 시뮬레이터를 함께 사용하면, XPath 및 XQuery를 통해 데이터를 선택하고 테스트하는 과정을 쉽게 수행할 수 있으며, 다른 방식보다 훨씬 빠르게 강력한 모바일 앱을 개발할 수 있습니다.
본 문서에서는 XPath와 XQuery의 가장 중요한 개념들을 간략하게 소개하여, MobileTogether에서 데이터를 활용하는 작업을 시작하는 데 도움을 드리고자 합니다. XPath 표현식의 기본적인 개념과 XQuery의 강력한 기능 중 일부를 다루었으며, 이를 통해 모바일 워크플로우에서 강력한 데이터 선택을 수행하고, 데이터에 대한 정확한 차트를 생성하며, 필요에 따라 특정 데이터 항목에 따라 모바일 솔루션의 사용자 인터페이스를 맞춤 설정할 수 있을 것입니다.
하지만 이 문서는 시작점일 뿐이며, 해당 언어의 모든 측면을 완벽하게 설명하거나 상세한 튜토리얼을 제공하는 것을 목표로 하지 않습니다. 초보자부터 숙련된 사용자까지 모두에게 적합한, 저희의 포괄적인 무료 온라인 XPath 교육 과정을 통해 더 많은 내용을 학습하실 수 있습니다.
MobileTogether는 XPath 3.0 및 XQuery 3.0의 모든 기능을 지원합니다. XPath 및 XQuery와 같은 국제 표준을 사용하는 장점은 많은 개발자들이 과거에 XML, XSLT 또는 XML 스키마를 다룰 때 XPath를 이미 학습했을 가능성이 높다는 것입니다. 따라서 MobileTogether에서 이러한 지식을 재사용할 수 있다는 것은 그들에게 큰 이점이 됩니다. 또한 XPath 1.0 또는 2.0에서 3.0으로의 업그레이드는 매우 간단한 과정입니다.
또한, XPath와 XQuery는 특정 회사에서 독점적으로 개발한 언어가 아니라 W3C에서 개발한 표준이기 때문에, 이러한 표준을 학습하면 다른 분야에서도 도움이 될 것입니다.
XPath 3.0 및 XQuery 3.0의 전체 사양은 다음 기술 사양 문서를 참조하십시오
마지막으로, MobileTogether에서 XPath와 XQuery를 사용하는 것은, 필요하다면 XMLSpy를 사용하여 더욱 복잡한 XPath 및 XQuery 표현식을 쉽게 프로토타입 제작, 개발 및 디버깅할 수 있다는 것을 의미합니다. XMLSpy는 성능 최적화를 위한 프로파일러를 포함하여, 완벽한 XPath 평가 엔진과 XQuery 디버거를 제공합니다.
XPath 3.0 및 XQuery 3.0에 대해 더 자세히 알아보려면 Altova의 온라인 교육 및 관련 문서 페이지를 참조하십시오. 또한, XPath에서 사용되는 모든 연산자와 함수를 설명하고, 이를 사용하는 방법을 예시와 함께 제공하는 XPath 참조 자료도 제공합니다. 마지막으로, MobileTogether 지원 포럼(https://support.mobiletogether.com/)에서 XPath 및 XQuery 관련 질문을 자유롭게 문의하십시오