2009-04-10 8 views
1

내 질문은 : XSLT를 사용하는 방법은 다음과 같이 표시됩니다 (아래 샘플 코드를 참조하십시오) 결과는 HTLM에 수출 될 필요가 QUOTE 태그의 총 수를 계산 : 총 6 인용이 있습니다XSLT에서 총 견적 수를 계산하는 방법은 무엇입니까?

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="text.xsl" ?> 

    <quotes> 
     <quote>Quote 1 </quote> 
     <quote>Quote 2</quote> 
     <quote>Quote 3</quote> 
     <quote>Quote 4</quote> 
     <quote>Quote 5</quote> 
     <quote>Quote 6</quote> 
    </quotes> 

이미이 XSLT 코드를 시도했지만 작동하지 않습니다

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     exclude-result-prefixes="xs" 
     version="2.0"> 
    <xsl:template match="/"> 
     <xsl:value-of select="count(//quote)"></xsl:value-of> 
    </xsl:template> 

</xsl:stylesheet> 

가이 문제를 좀 도와 주시겠습니까? 고맙습니다.

+0

힌트 : 아마도 가장 좋은 대답을 수락 할 수 있는지 모른다 - 대답 옆에 표시되는 확인/허용 표시를 클릭하십시오. –

답변

0

Firefox 3 및 IE6에서 정상적으로 작동하는 것 같습니다. 설치에 대한 자세한 정보가 필요하십니까?

3

XPath 표현은 효율적이지는 않지만 은 올바른 결과 인을 생성합니다. 변환이 색슨 9.1.0.5J으로 실행

, 결과는 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?>6 

문제는이 그것을해야하지 않는 (는 XSLT 2.0 변환 인 것 같다 !), 브라우저 내에서 실행하려고하는 것 같습니다. 불행히도, 오늘날의 브라우저는 (아직) XSLT 2.0을 지원하지 않습니다.

해결 방법은 단순히 버전을 1.0으로 변경하는 것입니다.

또한이 변환에 XML 스키마 네임 스페이스가 필요하지 않습니다.

마지막으로, 제공된 XML 문서의 구조가 변경되지 않으면보다 효율적인 XPath 표현식이 사용됩니다 (// 약어를 사용하면 맨 위 요소 노드에서 시작되는 전체 (하위) 트리가 스캔되기 때문에) 다음 수 :

count(/*/quote) 

이 모든 함께 퍼팅 우리 변환 다음 얻을 :

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

    <xsl:template match="/"> 
     <xsl:value-of select="count(/*/quote)"/> 
    </xsl:template> 
</xsl:stylesheet> 

그리고 그것은 생산 원하는 결과.

+0

OK, 많이 작동합니다. –

관련 문제