2011-01-21 6 views
2

XSLT를 사용하여 단어를 삭제하려면 regex를 작성하는 데 도움이 필요합니다. 단순히 ...XSLT에서 단어를 제거하는 정규식

/이벤트/26,207분의 262

:

나는에서 내 XML 파일의 "detailpath"의 출력을 변경해야

26,207분의 262

XSL은 다음과 같습니다.

<xsl:value-of select="detailpath"/> 

어떻게 "/ events /"을 (를) 제거 할 수 있습니까?

미리 감사드립니다.

답변

3

정규식 패턴은 단순히 것 '/events/'

당신은 XSLT 2.0 replace() 함수 호출에 사용할 수 있습니다 : 각 비를 대체하여 얻을 수있다 문자열 :

<xsl:value-of select="replace(detailpath,'/events/','')"/> 

기능은 XS를 반환 주어진 $ 패턴과 일치하는 $ input 의 중복 된 부분 문자열은 $ 치환 문자열로 나타납니다. 당신은 선택적으로 지정할 수 있습니다

flags

fn:replace($input  as xs:string?, 
      $pattern as xs:string, 
      $replacement as xs:string) as xs:string 

fn:replace($input  as xs:string?, 
      $pattern as xs:string, 
      $replacement as xs:string, 
      $flags  as xs:string) as xs:string 
+0

+1 XSLT/XPath 2.0 답변을 수정하십시오. –

-1

echo/events/262/26207 | sed -e 's/events/|| g'

이것은 솔라리스의 bash에서 작동하며, 조정하면 PHP, Javascript, Perl에서 필자의 지식으로 작동합니다.

+5

나는 XSLT 솔루션을 원했던 것 같습니다. –

2

당신이 사용이 XPath는 1.0 표현을합니다 alse 수있는 사용자 (예를 들어, 시작 문자열)주의 마십시오

substring(detailpath, 9 * starts-with(detailpath,'/events/')) 
+0

+1 똑똑한 해결책 –

0

또 다른 XPath를 1.0 솔루션 (대체 할 문자열의 인스턴스가 하나만 있다고 가정)과 상관없이 작동합니다. 텍스트 부분은 다음 문자열에 있습니다.

<xsl:value-of select="concat(substring-before(detailpath,'/events/'), 
          substring-after(detailpath,'/events/'))" /> 
관련 문제