2011-08-15 3 views
0

누군가가 왜 이것이 작동하지 않는지 말할 수 있습니까?XSLT 하위 문자열 및 해시 태그

내 문서 전체에 다음과 같이 표시된 열 구분이 있습니다. <cb ed="#S" n="45rb"/> 해시 태그는 원본 문서가 식별되는 다른 요소를 나타냅니다.

이제 다음 문서에서 열 구분을 표시하고 싶습니다. 그래서 그것은 다음과 같습니다 : | S45rb |. 나는 간단한 substring 함수를 사용하여 해시 태그를 제거 할 수 있다고 생각했다.

<xsl:template match="TU:cb"> 
    <xsl:variable name="hashms"><xsl:value-of select="//TU:cb/@ed"/></xsl:variable> 
    <xsl:variable name="ms"><xsl:value-of select="substring($hashms,1,1)"/></xsl:variable>  

    <span>| <xsl:value-of select="$ms"/> <xsl:value-of select="//TU:cb/@n"/> |</span> 
</xsl:template> 

이렇게하면 다음과 같은 결과가 나타납니다. | # 75ra |. 인수의 첫 번째 문자 인 1은 문자열의 첫 번째 문자를 참조해야하며 두 번째 문자 인 1은 한 문자 위로 이동하고 원하는 문자로 옮겨야한다고 말합니까? S? 대신 나는 S을 얻지 않지만 해시 태그만을 얻습니다. 해시 태그와 문자열에 대해 알고 있습니까?

도움 주셔서 감사합니다. 당신이합니다 (# 후) 두 번째 문자에서 시작하려면

답변

1

XSL은, 0 기본 아니라, 당신은 또한 생략 할 수 2보다는 1

http://www.w3schools.com/Xpath/xpath_functions.asp

substring($hashms,2,1) = S 

해야한다 길이는 나중에 확장성에 도움이 될 수 있습니다. 특히 #가 식별자 인 후에 무엇이 나오면 코드를 제한하는 이유는 무엇입니까?

substring($hashms,2) = S 
substring('#S2',2) = S2 
+0

해결 - 그 이유는 1,235 점입니다. 이 질문에 대답 할 때 더 많이 얻길 바랍니다. – Jeff