2010-07-14 10 views
5

문제가 있습니다.XSLT에 매개 변수를 전달하는 방법은 무엇입니까?

저는 100 개 코스에 대한 정보가 들어있는 XML 파일이 있습니다.

나는 100 개 코스 목록을 멋지게 보여주는 XSL 파일을 가지고 있습니다.

하지만 1 코스 만 표시하려면 어떻게해야합니까? "ENGL 100"만 표시하도록 XSLT 파일에 매개 변수를 전달할 수 있습니까?

XML은이 같은 같습니다

<document> 
<menu> 
    <item> 
     <name>MTH 300</name> 
     <brief>Mathematics Skill Development</brief> 
     <description>A course in the fundamentals of ...</description> 
    </item> 
    <item> 
     <name>MTH 301</name> 
     <brief>Basic Algebra</brief> 
     <description>An introduction to algebra, ...</description> 
    </item> 
... 

나는 내가 XML을 통해 루프 "eng100.xsl"라는 XSLT 파일을 작성 만 ENG 100 표시 할 수 있습니다 알을하지만 난하고 싶지 않아 이 파일들을 수십 개 쓸 수 있습니다.

XML은 동적이며이를 제어 할 수 있습니다. XSLT 파일을 정적으로 변경하지 마십시오.

매개 변수를 XSLT에 전달할 방법이 있습니까?

+1

답변은 사용중인 XSLT 엔진과 호출 방법에 따라 달라집니다. –

답변

6

XSLT에 매개 변수를 전달할 수 있습니다.이 작업은 XSLT 프로세서에 따라 다르지만 일반적으로 명령 줄 프로세서 인 경우 추가 명령 인수로 수행됩니다.

당신은 당신은 다음 XSLT에서이 매개 변수를 테스트하고 그것의 값에 따라 다른 템플릿을 호출 할 수 있습니다

<xsl:param name="courseName" select"initialValue"/> 

를 사용하여 매개 변수를 선언합니다. 예를 들어 매개 변수가 비어 있으면 모든 요소를 ​​처리하는 현재 템플릿을 호출하고, 그렇지 않으면 항목 이름이 매개 변수 값과 같을 때 요소 만 처리하는 템플릿을 호출합니다. 테스트를 통해이 작업을 수행 할 수 있습니다.

그러나 필터링 및 서식 지정을 통해 한 파일에 두 가지 문제점을 혼합합니다. 필자는 XML 요소의 선택을 포맷팅과 구분하여 두 개의 xslt 파일을 파이프 라인으로 실행합니다.

+0

좋은 답변입니다. +1. –

+0

또한 일부 시나리오에서는 변형을 유도하고 "document()"기능을 사용하여 "data"문서에 액세스하는 "메타 데이터"입력 문서를 사용할 수 있습니다. 이것은 효율성면에서 비용이 듭니다. –

+3

xml 문서에 처리 명령이 있으면 어떻게됩니까? url-encoded name = value에 의해 xsl 매개 변수를 XML 파일에 전달할 수 있습니까? 매개 변수? 내 말은, 다음과 같이 할 수 있을까요? mycontent.xml? courseName = MTH300 – brighty

관련 문제