2009-04-15 10 views
1

어떻게 "-z 또는 A-Z 사이의 하위 문자열 (변수, 1,1)"을 수행 한 다음 XSLT를 사용하여 X를 수행합니까? 하나의 옵션은 정규식을 사용하는 것입니다하지만 난 거기에 너무 많은 잔인한되지 않을 것으로 기대합니다.매우 간단한 XSLT 문자열 질문

+0

Hmmh : – StaxMan

+0

문자열 변수의 첫 번째 문자가 대문자인지 아니면 소문자인지 정확하게 확인하고 싶습니까? – el2iot2

답변

3

간단한 XSLT 1.0 용액 :

이 변환 :

 Not Letter 
: 임의의 XML 문서 (사용되지 않음)에인가

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:variable name="vLetters" 
    select="'ABCDEFGHIKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"/> 

    <xsl:variable name="vText" select="'1Text'"/> 

    <xsl:template match="/"> 
     <xsl:choose> 
     <xsl:when test= 
      "contains($vLetters, substring($vText,1,1))"> 
      Letter 
     </xsl:when> 
     <xsl:otherwise> 
      Not Letter 
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 
</xsl:stylesheet> 

, 가 원하는 결과 생산

구체적인 경우에 따라 <xsl:choose> 명령의 두 개의 "절"(<xsl:when><xsl:otherwise>) 각각에 대한 처리가 필요합니다.

<xsl:choose> 
    <xsl:when test="matches($variable1, '^[a-zA-Z].*$')"> 
    Match 
    </xsl:when> 
    <xsl:otherwise> 
    NoMatch 
</xsl:otherwise> 
</xsl:choose> 
1

그리고 XSLT 2.0

, 당신은 정규 표현식 기능 matches을 사용할 수 있습니다. 정규식이 왜 과잉일까요? XSLT 자체가 무겁기 때문에 RE의 사용에 대해 걱정할 필요가 없다고 생각합니다. 가능한 경우 좋은 프로세서는 어쨌든 사전 컴파일해야합니다.
+0

XSLT 2.0은 다른 단점 중에서도 원하는 브라우저에서 신속하고 더러운 변환 테스트를 수행 할 수 없다는 단점이 있습니다. – Brian

+0

동의. 같은 이유로 XSLT 1.0을 사용하는 경향이 있습니다. – el2iot2