2017-04-25 2 views
0

XSLT의 새로운 기능이며 특정 단어의 위치를 ​​가져올 수 있습니까? "!"특정 단어의 위치 가져 오기

<Data>The quick brown fox jumps over the lazy dog!</Data> 

가 나는 "갈색", "이상", "개"의 위치를 ​​얻고 싶어 예를 들어,이 같은 데이터를 가지고있다. 그리고 다른 출력 이름으로 저장하십시오. 갈색의 위치가 <foo>3</foo>처럼, 이상 의 위치는 <hop>9</hop>, <boo>6</boo>입니다!<po_df>10</po_df>. 가능한가? 당신은 단지 단어를 찾는다면

+1

안녕하십니까, @ user918368. xslt-1.0과 -2.0을 모두 태그 지정 했으므로 정확히 무엇을 사용하고 있습니까? 2.0이면 1.0 태그를 제거 할 수 있습니다. –

+0

예, v2.0을 사용하고 있습니다. 고맙습니다. – user7918368

답변

1

당신이 사용할 수있는 요소의 이름은 당신이 게시 된 곳

<Data> 
    <matched item="brown" at-pos="3"/> 
    <matched item="over" at-pos="6"/> 
    <matched item="dog" at-pos="9"/> 
</Data> 

그래서 그것이 내가 확실하지 않다 (오른쪽 위치를 가지고 있습니다 tokenize(., '\s+|\p{P}')

<xsl:template match="Data"> 
    <xsl:copy> 
     <xsl:variable name="words" select="tokenize(., '\s+|\p{P}')"/> 
     <xsl:for-each select="'brown', 'over', 'dog'"> 
      <matched item="{.}" at-pos="{index-of($words, .)}"/> 
     </xsl:for-each> 
    </xsl:copy> 
</xsl:template> 

(예 : hop)을 가져와야하므로이를 구현하려고하지 않았습니다.).

구두점 문자를 식별하고 싶기 때문에 tokenize가 충분하지 않거나 analyze-string을 사용하더라도 위치를 일치시키고 수집하는 것이 쉽지 않습니다. 어쩌면 다른 누군가가 더 좋은 생각을 가지고있을 수도 있습니다.

+0

이 답변에 추가하기 위해 일부 정규식 사투리에는 "단어 경계"로 분리 할 수있는 옵션이 있지만 이것은 언어마다 다른 변수이므로 XPath에는 존재하지 않으므로 국제 표준이됩니다. "단어"가 의미하는 것을 확실하게 정의 할 수 있다면 코드에서 그 정의를 구현하는 데 도움이 될 것입니다. –

+0

멋진 토큰 화 표현. –