2011-10-06 4 views
0

문자가 200 개 이상이면 요소의 콘텐츠를 삭제할 수있는 옵션이 XSLT에 있는지 궁금합니다. 아래에서 모든 콘텐츠 요소를 사용합니다.XSLT에 하위 문자열이있는 오류

경고 : XSLTProcessor에 :: transformToXml() xsltprocessor.transformtoxml] 런타임 에러 : 파일 stylesheet.xslt 선 라인 index.php에 적용 템플릿 소자 (20) (42)

경고 : XSLTProcessor에 :: transformToXml() [xsltprocessor.transformtoxml] : '선택'표현식이 노드 집합으로 평가되지 않았습니다.

<xsl:template match="a:content | description"> 
    <c> 
     <xsl:apply-templates select="substring('node() | @*', 1, 200)" /> 
    </c> 
</xsl:template> 
+0

음 ... 나는 아주 당신이 무슨 일을하는지 수행하지 않습니다,하지만 난 문자열 길이를 확인하여 접근하는 것입니다 :

당신이 아마 원하는 것은 것을 나에게 보인다 if 블록 안에 .. 어쩌면 당신의 솔루션이 더 매끄럽다. (내가 말했듯이, 나는 그것을 이해하지 못한다.) ... – Aerik

+0

이것은 아마도 문제 일 것입니다. 이것은 어떤 노드로 평가되지 않는 문자열을 반환합니다. 네가하고 싶은게이게 확실한거야? – FailedDev

+0

@FailedDev 노드는 컨텐트입니다. 기술. 이게 네가 말하는거야 ? – EnexoOnoma

답변

1
<xsl:apply-templates select="substring('node() | @*', 1, 200)" /> 

select에 지정된 XPath식이 상기 특성 라인 (20)에서의 index.php에 입력 xs:string이다.

그러나 XSLT 1.0 및 XSLT 2.0 템플릿은 문자열이 아닌 노드에만 적용 할 수 있습니다. 이것이보고 된 오류 메시지를받는 이유입니다.

<xsl:value-of select="substring(., 1, 200)" /> 
+0

의 샘플입니다.이 대답에 감사드립니다. – EnexoOnoma

+0

@mtopia : 천만에. –

관련 문제