2012-05-24 2 views
2

xsl:variable의 "단계"에 대해 잘 모릅니다. 아무도 "단계"를 설명 할 수 있다면 고맙겠습니다.xsl : variable에 <step>의 의미는 무엇입니까?

다음 XSLT는 루트 요소에 2 개의 요소 만 포함합니다.

xsl:output 출력 형식을 정의하십시오. xsl:variable 변수를 정의하십시오.

어떻게이 코드를 구문 분석합니까? 이 코드는 무엇을 의미합니까?

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:saxon="http://saxon.sf.net/" 
    version="2.0" 
    extension-element-prefixes="saxon"> 

    <xsl:output method="html" omit-xml-declaration="yes" 
    encoding="utf-8" indent="no"/> 

    <!-- <xsl:output method="xml" omit-xml-declaration="no" 
    encoding="utf-8" indent="no"/> --> 

    <xsl:variable name="processes"> 
    <!-- exclude elements with @specific-use='print-only' --> 
    <step>prep/jpub3-webfilter.xsl</step> 
    <!-- format citations in NLM/PMC format --> 
    <step>citations-prep/jpub3-PMCcit.xsl</step> 
    <!-- convert into HTML for display --> 
    <step>main/jpub3-html.xsl</step> 
    </xsl:variable> 

    <xsl:include href="main/shell-utility.xsl"/> 

</xsl:stylesheet> 

보충 "쉘 utility.xsl는"

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:saxon="http://saxon.sf.net/" 
    version="2.0" 
    extension-element-prefixes="saxon"> 

    <!-- This stylesheet does not stand alone! It is a component 
     to be called into XSLT 2.0 shell stylesheets. --> 

    <xsl:variable name="document" select="/" saxon:assignable="yes"/> 

    <xsl:param name="runtime-params"> 
    <base-dir> 
     <xsl:value-of 
     select="replace(base-uri(/), '/[^/]+$','')"/>  
    </base-dir> 
    </xsl:param> 

    <xsl:template match="/"> 
    <xsl:for-each select="$processes/step/concat('../',.)"> 
     <xsl:message> 
     <xsl:text>&#xA;... Applying </xsl:text> 
     <xsl:value-of select="."/> 
     </xsl:message> 
     <saxon:assign name="document" 
     select="saxon:transform(
        saxon:compile-stylesheet(doc(.)), 
        $document, 
        $runtime-params/*)"/> 
     <!-- A third argument to saxon:transform could specify 
      runtime parameters for any (or all) steps --> 
    </xsl:for-each> 
    <xsl:sequence select="$document"/> 
    <xsl:message>&#xA;... Done</xsl:message> 
    </xsl:template> 

</xsl:stylesheet> 

답변

3

코드는 processes라는 변수를 생성하고 그것을 <step> 세 요소를 포함하는 노드 목록을 지정한다. <step> 요소는 XSL 파서에 관한 한 그 자체로 의미가 없습니다.

+1

XSLT2 변수는 매우 일반적이며 XML 노드 목록/트리 단편을 포함 할 수 있습니다. –

1

이 코드는 무엇을 나타 냅니까?

<xsl:variable name="processes">  
    <!-- exclude elements with @specific-use='print-only' -->  
    <step>prep/jpub3-webfilter.xsl</step>  
    <!-- format citations in NLM/PMC format -->  
    <step>citations-prep/jpub3-PMCcit.xsl</step>  
    <!-- convert into HTML for display -->  
    <step>main/jpub3-html.xsl</step> 
</xsl:variable> 

processes 입력 document-node()의 이름 전역 변수의 정의입니다 - 그 값은 문서 노드의 하위 세 step 요소를 포함하는 임시 나무입니다.

이 변수의 사용 방법은 포함 된 스타일 시트 모듈의 코드 ( main/shell-utility.xsl)에 따라 다릅니다. 이 코드는 제공되지 않으므로 processes 변수의 실제 사용법에 관해서는 아무 것도 말할 수 없습니다.

+0

해답을 보내 주셔서 감사합니다. shell-utility.xsl 코드 –

+0

을 업로드했습니다.이 xlst를 사용하여 saxon에 의해 xml을 html로 변환하면 터미널 쇼 오류 인 "$ process/step/concat ('../')의 오류가 발생합니다.) : 경로 표현식에 예기치 않은 토큰 []이 있습니다. 뭔가 잘못된 것 같습니다. –

+0

'$ processes/step/concat ('../',.)'경로가 잘못되었습니다. -'concat()'는 함수이므로 경로의 일부로 사용할 수 없습니다. 여기서 의도 한 결과가 무엇인지 확신 할 수 없으므로 해결 방법을 말할 수 없습니다. – MiMo