2008-09-18 3 views
11

저는 리눅스와 윈도우에서 사용하고 싶은 xlst 파일을 쓰고 있습니다. 이 파일에서는 MSXML 및 xsltproc ("urn : schemas-microsoft-com : xslt"및 "http://exslt.org/common"각각)에 대해 다른 네임 스페이스로 선언 된 노드 집합 함수를 사용합니다. 노드 집합을 사용하는 플랫폼 독립적 인 방법이 있습니까?플랫폼 독립적 인 방식으로 노드 집합 기능을 사용하는 방법은 무엇입니까?

+0

안녕하세요 Евгений, xxx : node-set() 함수의 단일 범용 구현에 필요한 정보를 제공하는 내 대답을 참조하십시오. 건배 –

답변

1

Firefox 3은 클라이언트 측 XSLT 처리에서 노드 집합 (EXSLT 2.0 네임 스페이스 개선의 일부로)을 구현합니다.

아마도 당신이 찾고 있던 대답이 아니 겠지만 문제의 상황에 따라 다를 수 있습니다.

<xsl:choose> 
    <xsl:when test="function-available('exslt:node-set')"> 
    <xsl:apply-templates select="exslt:node-set($nodelist)" /> 
    </xsl:when> 
    <xsl:when test="function-available('msxsl:node-set')"> 
    <xsl:apply-templates select="msxsl:node-set($nodelist)" /> 
    </xsl:when> 
    <!-- etc --> 
</xsl:choose> 

심지어 명명 된 템플릿이 논리를 포장하고, 같은 노드 세트로 호출 할 수 있습니다 : ;-)

7

당신은 당신이 사용해야 작동 기능 - 가능()를 결정하는 기능을 사용할 수 있습니다 매개 변수.

3

Exslt은 플랫폼 독립적 인 xslt 확장 집합이라고 가정되지만, 다양한 xslt 프로세서가이를 구현하도록 선택해야합니다.

MSXML이 실제로 exsl : node-set()을 지원하지만 some evidence이 있지만 확실하지 않습니다.

MSXML 위에 exslt의 an implementation을 설명하는 old article이 있습니다.

그렇지 않으면, 나는 된 구현을 포함하여, 당신은 어디서나 EXSLT 하나를 사용 coul 창에 노드가 세트의 MSXML 구현을 사용하는 특별한 이유가 없으면 함수 사용 가능)이 (친구 :

0

생각 http://exslt.org에서 스타일 시트로 다운로드하면 exslt howto에 필요한 단계가 설명되어 있습니다. "확장 네임 스페이스"또는 "명명 된 템플릿"방식으로 사용할 수 있습니다.

7

예, 좋고 보편적 인 해결책이 있습니다.

EXSLT의 기능 common:node-set()은 인라인 자바 스크립트 기능으로 구현할 수 있으므로 자바 스크립트를 지원하는 모든 브라우저 (예외없이 거의 모든 주요 브라우저)에서 사용할 수 있습니다.

이 기술은 Julian Reschke에 의해 처음 발견되었으며 xsl-list에 게시 한 후 David Carlisle으로 게시했습니다. blog of David Carlisle에는 이렇게 구현 된 common : node-set() 함수가 원하는 브라우저에서 작동 하는지를 보여주는 테스트 페이지에 대한 링크가 있습니다.

은 요약하면 :

  1. 먼저 here 가서 설명을 읽어 보시기 바랍니다.
  2. 그런 다음 테스트 페이지를 시도하십시오. 특히 IE (MSXML을 의미 함)와 작동하는지 확인하십시오.
  3. 마지막으로 코드를 사용하십시오.

Do enjoy!

관련 문제