2017-11-23 4 views
0

하나의 시나리오와 관련하여 도움이 필요합니다. 텍스트의 마지막 공백, 하이픈 또는 전체 정지 문자보다 먼저 부분 문자열을 사용해야합니다. substring-before와 함께 시도했습니다XSLT2.0의 하위 문자열

예를 들어 텍스트가 'SIR WILLIAM SIEMENS SQUARE'인 경우 'SIR WILLIAM SIEMENS'을 첫 번째 텍스트 문자열 및 'SQUARE'로 지정해야합니다. 'SIR'및 '윌리엄 지멘스 스퀘어'를 받기 전에 하위 문자열 사용. 공간이 후 작동합니다 - (합니다.)

<xsl:template match="/"> 
    <a><xsl:value-of select="tokenize(., ' ')[position() != last()]"/></a> 
    <b><xsl:value-of select="tokenize(., ' ')[last()]"/></b> 
</xsl:template> 

답변

0

먼저 당신은 대체해야합니다

+0

덕분에, 지금 일하고 있습니다. – Siddharth

0

당신은 다음과 같이해야한다. 이렇게 해봐.

<xsl:template match="/"> 
    <root> 
     <xsl:variable name="maintext" select="replace(replace(/root/a, '\.', '. '), '-', '- ')"/> 
     <a><xsl:value-of select="tokenize($maintext, ' ')[position() != last()]"/></a> 
     <b><xsl:value-of select="tokenize($maintext, ' ')[last()]"/></b> 
    </root> 
</xsl:template> 
+0

감사를 사용할 수 있지만, 내 시나리오에서, 나는 공간의 마지막 발생, 또는 하이픈 또는 전체 중지하기 전에 하위 문자열해야합니다. 예를 들어, 텍스트가 'SIR WILLIAM SIEME N.SSQUARE'인 경우 하위 문자열을 'SIR WILLIAM SIEME N'으로 사용해야합니다. 및 'SSQUARE' – Siddharth

0

당신은 또한 분석 문자열

<xsl:template match="/"> 
    <xsl:analyze-string select="normalize-space(.)" regex="(.+[\W])([\w]+)"> 
     <xsl:matching-substring> 
      <a><xsl:value-of select="normalize-space(regex-group(1))"/></a> 
      <b><xsl:value-of select="regex-group(2)"/></b> 
     </xsl:matching-substring> 
     <xsl:non-matching-substring> 
      <xsl:value-of select="."/> 
     </xsl:non-matching-substring> 
    </xsl:analyze-string> 
</xsl:template>