diff options
Diffstat (limited to 'files/ko/introduction_to_using_xpath_in_javascript/index.html')
-rw-r--r-- | files/ko/introduction_to_using_xpath_in_javascript/index.html | 367 |
1 files changed, 367 insertions, 0 deletions
diff --git a/files/ko/introduction_to_using_xpath_in_javascript/index.html b/files/ko/introduction_to_using_xpath_in_javascript/index.html new file mode 100644 index 0000000000..e15574b588 --- /dev/null +++ b/files/ko/introduction_to_using_xpath_in_javascript/index.html @@ -0,0 +1,367 @@ +--- +title: Introduction to using XPath in JavaScript +slug: Introduction_to_using_XPath_in_JavaScript +tags: + - Add-ons + - DOM + - Extensions + - Transforming_XML_with_XSLT + - Web Development + - XPath +translation_of: Web/XPath/Introduction_to_using_XPath_in_JavaScript +--- +<p>이 문서는 JavaScript 안, 확장기능, 웹사이트에서 <a href="ko/XPath">XPath</a>를 사용하기 위한 인터페이스를 설명합니다. Mozilla는 <a class="external" href="http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html">DOM 3 XPath</a>를 상당량 구현합니다. 이것은 XPath 식이 HTML과 XML 문서 모두에서 잘 돌아간다는 것을 뜻합니다.</p> + +<p>XPath를 사용하는 주 인터페이스는 <a href="ko/DOM/document">document</a> 개체의 <a href="ko/DOM/document.evaluate">evaluate</a> 함수입니다.</p> + +<h2 id="document.evaluate" name="document.evaluate">document.evaluate</h2> + +<p>이 메소드는 <a href="ko/XML">XML</a>에 기반을 둔 문서(HTML 문서 포함)에 대해 <a href="ko/XPath">XPath</a> 식을 평가하고 단일 노드나 노드 집합일 수 있는 <code>XPathResult</code> 개체를 반환합니다. 이 메소드를 다루는 기존 문서는 <a href="ko/DOM/document.evaluate">여기</a>에 있지만 당장 우리 필요에 좀 부족하여, 더 이해가 빠른 설명을 아래에 제공합니다.</p> + +<pre class="notranslate">var xpathResult = document.evaluate( xpathExpression, contextNode, namespaceResolver, resultType, result ); +</pre> + +<h3 id=".EB.A7.A4.EA.B0.9C.EB.B3.80.EC.88.98" name=".EB.A7.A4.EA.B0.9C.EB.B3.80.EC.88.98">매개변수</h3> + +<p><a href="ko/DOM/document.evaluate">evaluate</a> 함수는 매개변수를 총 5개 취합니다.</p> + +<ul> + <li><code>xpathExpression</code>: 평가할 XPath 식을 포함하는 문자열</li> +</ul> + +<ul> + <li><code>contextNode</code>: <code>xpathExpression</code>이 평가될 모든 자식 노드를 포함하는 문서의 노드. <a href="ko/DOM/document">document</a> 노드가 가장 흔히 쓰입니다.</li> +</ul> + +<ul> + <li><code>namespaceResolver</code>: 그 접두사와 관련된 namespace URI를 나타내는 문자열을 반환하는 <code>xpathExpression</code> 내에 포함되는 모든 namespace 접두사를 넘겨주는 함수. 이는 XPath 식에 쓰(이)는 접두사와 문서에 쓰(이)는 아마도 다른 접두사 사이에 변환을 가능하게 합니다. 함수는 어느 한쪽일 수 있습니다. + + <ul> + <li><code><a class="external" href="http://www.xulplanet.com/references/objref/XPathEvaluator.html">XPathEvaluator</a></code> 개체의 <code> <a href="ko/DOM/document.createNSResolver">createNSResolver</a></code> 메소드를 써서 <a href="#Implementing_a_Default_Namespace_Resolver">만듭니다</a>. 항상 가상으로 이를 쓰면 좋습니다.</li> + <li>HTML 문서를 위해서나 namespace 접두사가 없을 때 쓸 수 있는 <code>null</code>. 만약 <code>xpathExpression</code>가 namespace 접두사를 포함하면 이는 <code>NAMESPACE_ERR</code> 코드를 내는 <code>DOMException</code>을 가져옴을 유의하세요.</li> + <li>사용자 정의 맞춤(custom) 함수. 세부 내용은 부록의 <a href="#Implementing_a_User_Defined_Namespace_Resolver">사용자 정의 Namespace Resolver 쓰기</a> 절을 보세요.</li> + </ul> + </li> +</ul> + +<ul> + <li><code>resultType</code>: 평가 결과로 반환되기 바랐던 결과 형을 지정하는 <a href="#XPathResult_Defined_Constants">상수</a>. 가장 흔히 넘겨주는 상수는 가장 자연스러운 형으로 XPath 식의 결과를 반환하는 <code>XPathResult.ANY_TYPE</code>입니다. 부록에 <a href="#XPathResult_Defined_Constants">쓸 수 있는 상수</a> 목록 전체를 포함하는 절이 있습니다. 아래 <a href="#Specifying_the_Return_Type">반환형 지정</a> 절에서 설명합니다.</li> +</ul> + +<ul> + <li><code>result</code>: 결과를 반환하는 데 재사용하는 기존 <code>XPathResult</code> 개체나 새 <code>XPathResult</code> 개체를 만드는 데 쓸 수 있는 <code>null</code> 가운데 하나.</li> +</ul> + +<h3 id=".EB.B0.98.ED.99.98.EA.B0.92" name=".EB.B0.98.ED.99.98.EA.B0.92">반환값</h3> + +<p><code>resultType</code> 매개변수에서 <a href="#Specifying_the_Return_Type">지정한</a> 형의 <code>XPathResult</code> 개체인 <code>xpathResult</code>를 반환합니다. <code>XPathResult</code> 인터페이스는 <a class="external" href="http://lxr.mozilla.org/seamonkey/source/dom/public/idl/xpath/nsIDOMXPathResult.idl">여기</a>에서 정의됩니다.</p> + +<h3 id="Default_Namespace_Resolver_.EA.B5.AC.ED.98.84" name="Default_Namespace_Resolver_.EA.B5.AC.ED.98.84">Default Namespace Resolver 구현</h3> + +<p>우리는 <a href="ko/DOM/document">document</a> 개체의 <code>createNSResolver</code> 메소드를 써서 namespace resolver를 만듭니다.</p> + +<pre class="notranslate">var nsResolver = document.createNSResolver( contextNode.ownerDocument == null ? contextNode.documentElement : contextNode.ownerDocument.documentElement ); +</pre> + +<p><span class="comment">Or alternatively by using the <code>createNSResolver</code> method of a <code>XPathEvaluator</code> object. <pre> var xpEvaluator = new XPathEvaluator(); var nsResolver = xpEvaluator.createNSResolver( contextNode.ownerDocument == null ? contextNode.documentElement : contextNode.ownerDocument.documentElement ); </pre></span> 그리고 나서 <code>document.evaluate</code> 함수에 <code>namespaceResolver</code> 매개변수로 <code>nsResolver</code> 변수를 넘겨줍니다.</p> + +<p>XPath는 null namespace의 단 하나 뿐인 요소와 일치하는 접두사 없는 <code>QNames</code>을 정의함을 유의하세요. XPath에는 기본 namespace를 얻는 방법이 없습니다. null이 아닌 namespace의 요소나 속성을 일치시키려면, 접두사 붙은 이름 검사를 쓰고 접두사를 namespace에 매핑하는 namespace resolver를 만들어야 합니다. 아래 <a href="#Implementing_a_User_Defined_Namespace_Resolver">사용자 정의 namespace resolver 만드는</a> 법을 더 읽으세요.</p> + +<h3 id=".EB.B0.98.ED.99.98.ED.98.95_.EC.A7.80.EC.A0.95" name=".EB.B0.98.ED.99.98.ED.98.95_.EC.A7.80.EC.A0.95">반환형 지정</h3> + +<p><code>document.evaluate</code>로부터 반환하는 변수 <code>xpathResult</code>는 개별 노드 (<a href="#Simple_Types">단순 형</a>)나 노드 모음(collection) (<a href="#Node-Set_Types">node-set 형</a>) 가운데 하나로 구성할 수 있습니다.</p> + +<h4 id=".EB.8B.A8.EC.88.9C_.ED.98.95" name=".EB.8B.A8.EC.88.9C_.ED.98.95">단순 형</h4> + +<p><code>resultType</code>으로 바랐던 결과형을 어느 한쪽으로 지정할 때,</p> + +<ul> + <li><code>NUMBER_TYPE</code> - a double</li> + <li><code>STRING_TYPE</code> - a string</li> + <li><code>BOOLEAN_TYPE</code> - a boolean</li> +</ul> + +<p>우리는 <code>XPathResult</code> 개체의 다음 속성에 각각 접근하여 식의 반환값을 얻습니다.</p> + +<ul> + <li><code>numberValue</code></li> + <li><code>stringValue</code></li> + <li><code>booleanValue</code></li> +</ul> + +<h5 id=".EC.98.88" name=".EC.98.88">예</h5> + +<p>다음은 HTML 문서의 <code><span class="nowiki"><p></span></code> 요소수를 얻기 위해 XPath 식 <code><a href="ko/XPath/Functions/count">count(//p)</a></code>을 씁니다.</p> + +<pre class="notranslate">var paragraphCount = document.evaluate( 'count(//p)', document, null, XPathResult.ANY_TYPE, null ); + +alert( 'This document contains ' + paragraphCount.numberValue + ' paragraph elements' ); +</pre> + +<p>비록 Javascript가 표시를 위해 숫자를 문자열로 변환하는 것을 허용하더라도, <code>stringValue</code> 속성(property)을 요청하면 XPath 인터페이스는 자동으로 숫자 결과로 변환하지 않습니다. 그래서 다음 코드는 작동하지 '<strong><big>않</big>'</strong>습니다.</p> + +<pre class="notranslate">var paragraphCount = document.evaluate('count(//p)', document, null, XPathResult.ANY_TYPE, null ); + +alert( 'This document contains ' + paragraphCount.stringValue + ' paragraph elements' ); +</pre> + +<p>대신 <code>NS_DOM_TYPE_ERROR</code> 코드를 갖는 예외(exception)를 반환합니다.</p> + +<h4 id="Node-Set_.ED.98.95" name="Node-Set_.ED.98.95">Node-Set 형</h4> + +<p><code>XPathResult</code> 개체는 주요한 3가지 서로 다른 형으로 반환될 node-set을 허용합니다.</p> + +<ul> + <li><a href="#Iterators">Iterators</a></li> + <li><a href="#Snapshots">Snapshots</a></li> + <li><a href="#First_Nodes">First Nodes</a></li> +</ul> + +<h5 id=".EB.B0.98.EB.B3.B5.EC.9E.90.28.ED.9B.91.EA.B0.9C.29" name=".EB.B0.98.EB.B3.B5.EC.9E.90.28.ED.9B.91.EA.B0.9C.29">반복자(훑개)</h5> + +<p><code>resultType</code> 매개변수로 지정한 결과형이 어느 한쪽일 때,</p> + +<ul> + <li><code>UNORDERED_NODE_ITERATOR_TYPE</code></li> + <li><code>ORDERED_NODE_ITERATOR_TYPE</code></li> +</ul> + +<p>반환되는 <code>XPathResult</code> 개체는 일치하는 노드(<code>XPathResult</code>의 <code>iterateNext()</code> 메소드를 써서 포함될 개별 노드에 접근함을 허용하는 반복자로 행동할)의 노드 집합입니다.</p> + +<p>우리가 모든 일치하는 개별 노드에 반복하고 나면, <code>iterateNext()</code>는 <code>null</code>을 반환합니다.</p> + +<p>그러나 주의하세요, 만약 반복 도중에 문서가 바뀌면 (문서 tree가 변경됨) 그것은 반복을 무효로 만들고(invalidate) <code>XPathResult</code>의 <code>invalidIteratorState</code> 속성을 <code>true</code>로 지정하고 <code>NS_ERROR_DOM_INVALID_STATE_ERR</code> 예외를 냅니다.</p> + +<h6 id=".EB.B0.98.EB.B3.B5.EC.9E.90_.EC.98.88" name=".EB.B0.98.EB.B3.B5.EC.9E.90_.EC.98.88">반복자 예</h6> + +<pre class="notranslate">var iterator = document.evaluate('//phoneNumber', documentNode, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null ); + +try { + var thisNode = iterator.iterateNext(); + + while (thisNode) { + alert( thisNode.textContent ); + thisNode = iterator.iterateNext(); + } +} +catch (e) { + dump( 'Error: Document tree modified during iteraton ' + e ); +} +</pre> + +<h5 id="Snapshots" name="Snapshots">Snapshots</h5> + +<p><code>resultType</code> 매개변수로 지정한 결과형이 어느 한쪽일 때,</p> + +<ul> + <li><code>UNORDERED_NODE_SNAPSHOT_TYPE</code></li> + <li><code>ORDERED_NODE_SNAPSHOT_TYPE</code></li> +</ul> + +<p>반환되는 <code>XPathResult</code> 개체는 일치하는 노드의 static node-set이고, 그것은 <code>itemNumber</code>가 검색(retrieve)되는 노드의 index인 <code>XPathResult</code> 개체의 <code>snapshotItem(itemNumber)</code> 메소드를 통해 각 노드에 접근을 허용합니다. 포함되는 노드의 총수는 <code>snapshotLength</code> 속성을 통해 입수할 수 있습니다.</p> + +<p>Snapshot은 변환 문서로 바꾸지 않습니다. 그래서 반복자와는 달리 snapshot은 무효로 만들지는 않지만 현재 문서와 들어맞지 않을지도 모릅니다, 예를 들어 노드가 이동됐을지도 모르고, 더 이상 존재하지 않는 노드나 추가될 수 있는 새 노드를 포함할지도 모릅니다.</p> + +<h6 id="Snapshot_.EC.98.88" name="Snapshot_.EC.98.88">Snapshot 예</h6> + +<pre class="notranslate">var nodesSnapshot = document.evaluate('//phoneNumber', documentNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); + +for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ ) +{ + dump( nodesSnapshot.snapshotItem(i).textContent ); +} +</pre> + +<h5 id="First_Node" name="First_Node">First Node</h5> + +<p><code>resultType</code> 매개변수로 지정한 결과형이 어느 한쪽일 때,</p> + +<ul> + <li><code>ANY_UNORDERED_NODE_TYPE</code></li> + <li><code>FIRST_ORDERED_NODE_TYPE</code></li> +</ul> + +<p>반환되는 <code>XPathResult</code> 개체는 XPath 식과 일치하는 오직 처음 발견한 노드입니다. 이는 <code>XPathResult</code> 개체의 <code>singleNodeValue</code> 속성을 통해 접근할 수 있습니다. 이는 노드 집합이 비면 <code>null</code>입니다.</p> + +<p>순서 없는 subtype인 경우 반환되는 단일 노드가 문서 순으로 처음이 아닐지도 모르지만 순서 있는 subtype인 경우 문서 순으로 처음 일치하는 노드임을 보장함을 유의하세요.</p> + +<h6 id="First_Node_.EC.98.88" name="First_Node_.EC.98.88">First Node 예</h6> + +<pre class="notranslate">var firstPhoneNumber = document.evaluate('//phoneNumber', documentNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); + +dump( 'The first phone number found is ' + firstPhoneNumber.singleNodeValue.textContent ); +</pre> + +<h4 id="ANY_TYPE_.EC.83.81.EC.88.98" name="ANY_TYPE_.EC.83.81.EC.88.98">ANY_TYPE 상수</h4> + +<p><code>resultType</code> 매개변수에 결과형을 <code>ANY_TYPE</code>으로 지정할 때, 반환되는 <code>XPathResult</code> 개체는, 식 평가에서 자연스럽게 생긴 어떤 형입니다.</p> + +<p>단순 형( <code>NUMBER_TYPE, STRING_TYPE, BOOLEAN_TYPE</code> ) 가운데 하나일 수도 있습니다, <strong><big>하지만</big></strong>, 만약 반환되는 결과형이 node-set이면 <strong><big>오직</big></strong> <code>UNORDERED_NODE_ITERATOR_TYPE</code>입니다.</p> + +<p>평가 뒤 형을 결정하기 위해서, 우리는 <code>XPathResult</code> 개체의 <code>resultType</code> 속성을 씁니다. 이 속성의 <a href="#XPathResult_Defined_Constants">상수</a>값은 부록에서 정의합니다. <span class="comment">None Yet =====Any_Type 예===== <pre> </pre></span></p> + +<h2 id=".EC.98.88_2" name=".EC.98.88_2">예</h2> + +<h3 id="HTML_.EB.AC.B8.EC.84.9C_.EC.95.88.EC.97.90.EC.84.9C" name="HTML_.EB.AC.B8.EC.84.9C_.EC.95.88.EC.97.90.EC.84.9C">HTML 문서 안에서</h3> + +<p>다음 코드는 XPath 식이 평가될 HTML 문서 안에서나 문서에 연결(link)된 어떤 JavaScript 조각(fragment)에 놓을 셈입니다.</p> + +<p>XPath를 써서 HTML의 모든 <code><span class="nowiki"><h2></span></code> heading 요소를 뽑아내면(extract), <code>xpathExpression</code> 문자열은 간단히 '<code>//h2</code>'입니다. 어떤 점에서, <code>//</code>는 요소 트리 어디에서나 노드명 <code>h2</code>와 요소를 일치시키는 재귀 내림 연산자(Recursive Descent Operator)입니다. 이를 위한 자세한 코드입니다. <span class="comment">link to introductory xpath doc</span></p> + +<pre class="notranslate">var headings = document.evaluate('//h2', document, null, XPathResult.ANY_TYPE, null ); +</pre> + +<p>HTML이 namespace가 없기 때문에, 우리는 <code>namespaceResolver</code> 매개변수에 <code>null</code>을 넘겨줌을 유의하세요.</p> + +<p>우리가 문서 전체에서 heading을 찾기를 바라기 때문에, 우리는 <code>contextNode</code>로 <a href="ko/DOM/document">document</a> 개체 자신을 씁니다.</p> + +<p>이 식의 결과는 <code>XPathResult</code> 개체입니다. 우리가 반환되는 결과형을 알고 싶다면, 우리는 반환되는 개체의 <code>resultType</code> 속성을 평가할지도 모릅니다. 이 경우에는 그것은 값이 <code>4</code>인 <code>UNORDERED_NODE_ITERATOR_TYPE</code>로 평가합니다. 이는 XPath 식의 결과가 node-set일 때 기본 반환형입니다. 동시에 단일 노드로 접근을 제공하고 특정 순서로 노드를 반환할지도 모릅니다. 반환되는 개체에 접근하기 위해, 우리는 반환되는 개체의 <code>iterateNext()</code> 메소드를 씁니다.</p> + +<pre class="notranslate">var thisHeading = headings.iterateNext(); + +var alertText = 'Level 2 headings in this document are:\n' + +while (thisHeading) { + alertText += thisHeading.textContent + '\n'; + thisHeading = headings.iterateNext(); +} +</pre> + +<p>우리가 한 노드를 반복하기만 하면, 우리는 그 노드의 모든 표준 <a href="ko/DOM_interfaces">DOM interfaces</a>에 접근할 수 있습니다. 우리 식에서 반환된 모든 <code>h2</code> 요소를 반복한 뒤에, 더 이상의 <code>iterateNext()</code> 호출은 <code>null</code>을 반환합니다.</p> + +<h3 id=".ED.99.95.EC.9E.A5.EA.B8.B0.EB.8A.A5_.EC.95.88.EC.97.90.EC.84.9C_XML_.EB.AC.B8.EC.84.9C_.ED.8F.89.EA.B0.80" name=".ED.99.95.EC.9E.A5.EA.B8.B0.EB.8A.A5_.EC.95.88.EC.97.90.EC.84.9C_XML_.EB.AC.B8.EC.84.9C_.ED.8F.89.EA.B0.80">확장기능 안에서 XML 문서 평가</h3> + +<p>다음은 예로 <a class="external" rel="freelink">chrome://yourextension/content/peopleDB.xml에</a> 자리한 XML 문서를 씁니다.</p> + +<pre class="notranslate"><?xml version="1.0"?> +<people xmlns:xul = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > + <person> + <name first="george" last="bush" /> + <address street="1600 pennsylvania avenue" city="washington" country="usa"/> + <phoneNumber>202-456-1111</phoneNumber> + </person> + <person> + <name first="tony" last="blair" /> + <address street="10 downing street" city="london" country="uk"/> + <phoneNumber>020 7925 0918</phoneNumber> + </person> +</people> +</pre> + +<p>확장기능 안에서 XML 문서의 컨텐트를 쓸 수 있게, 우리는 문서를 로드하는 동시에 변수 <code>xmlDoc</code>를 우리가 <code>evaluate</code> 메소드를 쓸 수 있는 <code><a href="ko/XMLDocument">XMLDocument</a></code> 개체로 문서에 포함하는 <code><a href="ko/XMLHttpRequest">XMLHttpRequest</a></code> 개체를 만듭니다,</p> + +<p>JavaScript는 확장기능 xul/js 문서에 씁니다.</p> + +<pre class="notranslate">var req = new XMLHttpRequest(); + +req.open("GET", "chrome://yourextension/content/peopleDB.xml", false); +req.send(null); + +var xmlDoc = req.responseXML; + +var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement); + +var personIterator = xmlDoc.evaluate('//person', xmlDoc, nsResolver, XPathResult.ANY_TYPE, null ); +</pre> + +<h2 id=".EB.B6.80.EB.A1.9D" name=".EB.B6.80.EB.A1.9D">부록</h2> + +<h4 id=".EC.82.AC.EC.9A.A9.EC.9E.90_.EC.A0.95.EC.9D.98_Namespace_Resolver_.EA.B5.AC.ED.98.84" name=".EC.82.AC.EC.9A.A9.EC.9E.90_.EC.A0.95.EC.9D.98_Namespace_Resolver_.EA.B5.AC.ED.98.84">사용자 정의 Namespace Resolver 구현</h4> + +<p>이는 단지 설명을 위한 예입니다. 이 함수는 <code>xpathExpression</code>에서 namespace 접두사를 취할 필요가 있고 그 접두사와 들어맞는 URI를 반환합니다. 예를 들어, 다음 식은</p> + +<pre class="notranslate">'//xhtml:td/mathml:math' +</pre> + +<p>(X)HTML 표 데이터 셀 요소의 자식인 모든 <a href="ko/MathML">MathML</a> 식을 선택합니다.</p> + +<p><code>mathml:</code> 접두사를 namespace URI '<code><a class="external" href="http://www.w3.org/1998/Math/MathML" rel="freelink">http://www.w3.org/1998/Math/MathML</a></code>'와 <code>html:</code>을 URI <code><a class="external" href="http://www.w3.org/1999/xhtml" rel="freelink">http://www.w3.org/1999/xhtml</a></code>와 관련시키기 위해 우리는 함수 하나를 제공합니다.</p> + +<pre class="notranslate">function nsResolver(prefix) { + var ns = { + 'xhtml' : 'http://www.w3.org/1999/xhtml', + 'mathml': 'http://www.w3.org/1998/Math/MathML' + }; + return ns[prefix] || null; +} +</pre> + +<p>그러면 <code>document.evaluate</code> 호출은 다음과 같습니다.</p> + +<pre class="notranslate">document.evaluate( '//xhtml:td/mathml:math', document, nsResolver, XPathResult.ANY_TYPE, null ); +</pre> + +<h4 id="XPathResult_.EC.A0.95.EC.9D.98_.EC.83.81.EC.88.98" name="XPathResult_.EC.A0.95.EC.9D.98_.EC.83.81.EC.88.98">XPathResult 정의 상수</h4> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">결과형 정의 상수</td> + <td class="header">값</td> + <td class="header">설명</td> + </tr> + <tr> + <td>ANY_TYPE</td> + <td>0</td> + <td>식 평가에서 자연스럽게 생긴 어떤 형을 포함하는 결과 집합. 만약 결과가 node-set이면 UNORDERED_NODE_ITERATOR_TYPE이 항상 결과형임을 주의하세요.</td> + </tr> + <tr> + <td>NUMBER_TYPE</td> + <td>1</td> + <td>single 숫자를 포함하는 결과. 이는 예를 들어, <code>count()</code> 함수를 쓰는 XPath 식에 쓸모가 있습니다.</td> + </tr> + <tr> + <td>STRING_TYPE</td> + <td>2</td> + <td>single 문자열을 포함하는 결과.</td> + </tr> + <tr> + <td>BOOLEAN_TYPE</td> + <td>3</td> + <td>single boolean 값을 포함하는 결과. 이는 예를 들어, <code>not()</code> 함수를 쓰는 XPath 식에 쓸모가 있습니다.</td> + </tr> + <tr> + <td>UNORDERED_NODE_ITERATOR_TYPE</td> + <td>4</td> + <td>식과 일치하는 모든 노드를 포함하는 결과 node-set. 노드는 반드시 문서에 나타나는 순서대로가 아닐지도 모릅니다.</td> + </tr> + <tr> + <td>ORDERED_NODE_ITERATOR_TYPE</td> + <td>5</td> + <td>식과 일치하는 모든 노드를 포함하는 결과 node-set. 결과 집합의 노드는 문서에 나타나는 순서대로입니다.</td> + </tr> + <tr> + <td>UNORDERED_NODE_SNAPSHOT_TYPE</td> + <td>6</td> + <td>식과 일치하는 모든 노드의 snapshot을 포함하는 결과 node-set. 노드는 반드시 문서에 나타나는 순서대로가 아닐지도 모릅니다.</td> + </tr> + <tr> + <td>ORDERED_NODE_SNAPSHOT_TYPE</td> + <td>7</td> + <td>식과 일치하는 모든 노드의 snapshot을 포함하는 결과 node-set. 결과 집합의 노드는 문서에 나타나는 순서대로입니다.</td> + </tr> + <tr> + <td>ANY_UNORDERED_NODE_TYPE</td> + <td>8</td> + <td>식과 일치하는 어떤 단일 노드를 포함하는 결과 node-set. 노드는 식과 일치하는 문서의 첫 노드일 필요는 없습니다.</td> + </tr> + <tr> + <td>FIRST_ORDERED_NODE_TYPE</td> + <td>9</td> + <td>식과 일치하는 문서의 첫 노드를 포함하는 결과 node-set.</td> + </tr> + </tbody> +</table> + +<div class="originaldocinfo"> +<h2 id=".EC.9B.90.EB.B3.B8_.EB.AC.B8.EC.84.9C_.EC.A0.95.EB.B3.B4" name=".EC.9B.90.EB.B3.B8_.EB.AC.B8.EC.84.9C_.EC.A0.95.EB.B3.B4">원본 문서 정보</h2> + +<ul> + <li>원본 문서 <a class="external" href="http://www-xray.ast.cam.ac.uk/~jgraham/mozilla/xpath-tutorial.html">Mozilla XPath 입문서</a>를 기반으로 함</li> + <li>원본 소스 저자: James Graham.</li> + <li>다른 기여자: James Thompson.</li> + <li>맨 나중 업데이트: 2006-3-25.</li> +</ul> +</div> + +<p>{{ languages( { "en": "en/Introduction_to_using_XPath_in_JavaScript" } ) }}</p> |