문제

누구나 요소의 특정 적격 아동 노드의 연결된 값을 포함하는 문자열 값을 반환하지만 다른 사람을 무시하는 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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top