xpath to return String 자격을 갖춘 아동 노드 값의 연결
-
05-07-2019 - |
문제
누구나 요소의 특정 적격 아동 노드의 연결된 값을 포함하는 문자열 값을 반환하지만 다른 사람을 무시하는 XPath 표현식 형식을 제안 할 수 있습니까?
<div>
This text node should be returned.
<em>And the value of this element.</em>
And this.
<p>But this paragraph element should be ignored.</p>
</div>
반환 된 값은 단일 문자열이어야합니다.
This text node should be returned. And the value of this element. And this.
이것은 단일 XPath 표현식에서 가능합니까?
감사.
해결책
XPath 1.0에서 :
당신이 사용할 수있는
/div//text()[not(parent::p)]
원하는 텍스트 노드를 캡처합니다. 연결 자체는 XPath 1.0에서 수행 할 수 없으며 호스트 응용 프로그램에서 수행하는 것이 좋습니다.
다른 팁
XPath 2.0에서 :
string-join(/*/node()[not(self::p)], '')
/div//text()
중간 노드에 관계없이 텍스트를 추출하는 이중 슬래시 힘
작동하는이 모양 :
컨텍스트로 사용합니다 /div/
:
text() | em/text()
또는 컨텍스트 사용없이 :
/div/text() | /div/em/text()
처음 두 줄을 연결하려면 다음을 사용하십시오.
concat(/div/text(), /div/em/text())
P를 제외한 모든 어린이를 원한다면 다음을 시도해 볼 수 있습니다 ...
string-join(//*[name() != 'p']/text(), "")
반환 ...
This text node should be returned.
And the value of this element.
And this.
각각의 고리를 사용하고 이와 같은 변수로 값을 조립할 수 있습니다.
<xsl:variable name="newstring">
<xsl:for-each select="/div//text()">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
제휴하지 않습니다 StackOverflow