XPath는 XML Path Language의 약자입니다. XML 문서의 요소와 속성을 탐색하는 데 사용할 수 있습니다. XPATH를 처음 사용하는 경우 다음을 참조하십시오.XPath 자습서먼저 공식을 공부하십시오.XPATH 설명서.
AI 챗봇은 Xpath를 생성하고 검증하는 데 매우 효과적일 수 있습니다.
XPath 1.0의 하위 집합은 다음과 같은 제한 사항과 함께 지원됩니다.
-
계단의 축
-
지원
조상, 조상 또는 자신, 속성, 자식, 자손, 자손 또는 자신
-
지원되지 않음
following, preceding, following-sibling, preceding-sibling, namespace
-
-
술어
-
지원
현재 노드 또는 조상 노드에 대한 조건과 그 속성(속성, 네임스페이스)Conditions on current node or ancestor nodes and its properties (attributes, namespaces)
-
지원되지 않음(예:
위치 번호, 축 자식::, descendant, descendant-or-self, following::, preceding::, following-sibling::, preceding-sibling::, function last()
-
기본 규칙
-
쓰다
/
그리고//
경로에서 -
작은따옴표 사용
' '
이름에서 -
파이프 사용
|
요청에 참여하기 위해 -
이름은 대소문자를 구분합니다.
<Body>
와 다릅니다.<body>
</body></Body>
예제
XPath 예제 1그리고XPath 예제 2(with namespace)는 다음에 대한 예제 파일입니다.
-
모든 요소와 모든 속성 가져오기
//* | //@*
-
모든 요소와 attribute1의 값을 가져옵니다.
(<elem1 attribute1="translate" attribute2="Do not translate"/>)
//* | //@attribute1
-
Child 요소의 모든 하위 항목 가져오기
//Child//*
-
속성 translate='true'인 경우에만 요소 lis와 그 자손을 가져옵니다.
(<lis translate="true">이것을 번역</lis>하십시오, <lis translate="false">이것을 번역하지 마십시오</lis>)
//lis[@translate='true']/descendant-or-self::*
-
요소의 속성이 translate='true'인 경우 모든 요소와 하위 항목을 가져옵니다.
//*[@translate='true']/descendant-or-self::*
-
Import value of the attribute Text in element Data
<Data Text="Text for translation">
//data/@text
-
가져오기
<mT:translation>
element 및 element 제외된 해당 자손<mT:ignore>
</mT:ignore></mT:translation>//mT:translation/descendant-or-self::*[not(ancestor-or-self::mT:ignore)]
-
translate='false' 속성이 있는 모든 요소를 제외합니다.
//*[not(@translate='false')]
-
translate='false' 속성이 있는 'lis' 요소를 제외합니다.
(<lis translate="false">번역하지 않음)</lis>
//*[not(self::lis[@translate='false'])]
-
translate='false' 속성이 있는 'lis' 요소와 그 자손을 제외합니다.
(<lis translate="false"><p>번역 안 함)</lis>
//*[not(ancestor-or-self::lis[@translate='false'])]
-
'link'를 포함하는 모든 요소를 제외합니다.
(<menu1link><tmenu41link>)
//*[not(contains(name(),'link'))]
-
요소 또는 해당 조상에 'link'를 포함하는 'lis' 속성이 있는 경우 모든 요소를 제외합니다.
(<ele lis="menu1link">, <mon lis="tmenu41link">)</mon></ele>
//*[not(ancestor-or-self::node()[contains(@lis, 'link')])]
-
부모 LANG에 2015 년으로 'updated'속성이있는 경우 요소 PT 가져 오기
(<LANG updated="20150213T121526"><PT>'
//LANG[contains(@updated,'2015')]/PT
-
'Description' 및 'Name' 요소가 'Definitions' 또는 'Types' 요소의 하위 항목이 아닌 경우에만 가져옵니다.
://*[not(ancestor-or-self::*[(name()='정의') 또는 (name()='유형')])]/*
[(name()='설명') 또는 (name()='이름')]
-
네임스페이스가 있는 XML
<root xmlns:xhtml="http://www.w3.org/1999/xhtml"><Child><Text>이것을 번역하십시오</Text></Child></root>
-
의 모든 요소 가져오기
<Child>
:</Child>//*[local-name()='Child']//*
-
요소만 가져오기
<Text>
안으로<Child>
:</Child></Text>//*[local-name()='Child']/*[local-name()='Text']
-
element 아래의 모든 요소 가져오기
<CONTRACT>
, if 속성<CATEGORY>
안으로<CONTRACT>
값이 있습니다.<ORIGINAL>
</ORIGINAL></CONTRACT></CATEGORY></CONTRACT>://*[local-name()='CONTRACT' 및 @CATEGORY='ORIGINAL']//*
-
-
네임스페이스 및 특성이 있는 XML
<root>
xmlns:xhtml="http://www.w3.org/1999/xhtml"<Child translate='1'>이것을 번역</Child>하십시오
</root>-
import 요소
<Child>
속성 translate가 1인 경우:*[local-name()="자식"][@*[local-name()='번역']='1']
</Child> -
translate=true 속성이 있는 모든 요소를 가져옵니다.
*[@*[local-name()='번역']='true']
-
-
네임스페이스가 있는 XML. element에서 element target 가져오기Import the element target from element
투
그러나 속성 id에 'img' 또는 'extra'가 포함된 경우에는 해당되지 않습니다.-
파일 예:
<tu id="pages|content|extra"><ori xml:lang="en">코스 1<target xml:lang="lang">코스 1</target xml:lang="lang"></ori xml:lang="en"></tu id="pages|content|extra">
-
XPATH 예제:
*[local-name()='tu' and not(contains(@id,'img') or contains(@id,'extra'))]/*[local-name()='target']
-
-
를 제외한 모든 요소 가져오기
<comment>
그리고<lis>
하지 않으면<lis translate="true">
그리고 그들의 후손들:</lis></lis></comment>*[count(ancestor-or-self::node()[(name()='lis' and (not(@translate='true')) ) or name()='comment'])=0]
-
를 제외한 모든 요소 가져오기
<comment>
속성이 있는 요소를 제외합니다.<... attribute2="Do not translate">
그리고 그들의 후손들:</...></comment>*[count(ancestor-or-self::node()[(@attribute2='번역하지 않음') 또는 name()='comment'])=0]
-
속성의 값 가져오기Import values of attributes
varName
그리고glossName
그러나 조상이 속성을 가지고 있는 경우에만 가능합니다.attribute1='번역하다'
또는attribute1='편집하다'
:*[(self::node()[@attribute1='번역' 또는 @attribute1='편집']]]//@*[local-name()='varName' 또는 local-name()='glossName']
-
속성이 있는 요소를 제외한 모든 요소와 속성을 가져옵니다.
이름= 뒤로
,메뉴
또는시간
:*[not(ancestor-or-self::node()[@Name='뒤로' 또는 @Name='메뉴' 또는 @Name='시간'])] | @*[not(조상 또는-self::node()[@Name='뒤로' 또는 @Name='메뉴' 또는 @Name='시간'])]
이 경우 모두 가져오고 가져오기에 필요하지 않은 속성을 잠그는 것이 더 나을 수 있습니다. 세그먼트가 잠기면 원본을 번역으로 전송하기 위해 편집기에서 대상에 소스를 복사합니다.
-
속성이 있는 모든 요소를 잠급니다.
이름
값 사용:뒤로
,메뉴
또는시간
그리고 그들의 후손들:*[@Name='뒤로' 또는 @Name='메뉴' 또는 @Name='시간']/descendant-or-self::*
-
의 모든 속성을 잠급니다.
이름
값 사용:뒤로
,메뉴
또는시간
그리고 그들의 후손들*[@Name='뒤로' 또는 @Name='메뉴' 또는 @Name='시간']//@*
-
일부 외부예제.
컨텍스트 노트
컨텍스트 노트는 번역된 세그먼트로 가져올 수 있습니다.
이 샘플에는 세 가지 예가 있습니다.
<?xml version-"1.0" encoding="utf-8"?> <root> <element context1="Note in attribute of parentElement 1 - select ../@context1"> <field context2="Note in attribute 1 - select @context2">번역1의 경우</field> <context3>요소 1의 참고 사항 - .를 선택합니다. /컨텍스트3</context3> </element> <element context1="Note in attribute of parentElement 2"> <field context2="Note in attribute 2">번역2의 경우</field> <context3>요소 2의 참고 사항</context3> </element> </root>
-
부모 요소의 속성(컨텍스트 1): .. /@context1
-
self 요소의 속성(context2): @context2
-
형제 요소(컨텍스트 3): .. /컨텍스트3
가져오는 경우 요소&속성: //*
컨텍스트 노트의 컨텐츠도 소스 세그먼트로 가져옵니다. 컨텍스트 노트 요소/속성을 Elements&Attributes의 일반 가져오기에서 제외합니다.