2011-12-12 2 views
2

입력 매개 변수를 XSLT 스타일 시트에 전달하는 방법은 무엇입니까? xsltproc을 사용하고 있는데 인수로 --stringparam <param> <value>을 사용하고 싶습니다. 그러나 XSLT 내부의 매개 변수에 액세스하는 방법을 모르겠습니다. 누군가가 모범을 보일 수 있습니까? 미리 감사드립니다.xslt의 입력 매개 변수

답변

2

이것은 내가 사용하고있는 것입니다. 기본값 부분은 선택 사항입니다.

<xsl:param name="yourParamname"/> 

이어야합니다.

<?xml version="1.0"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<!-- default value --> 
<xsl:variable name="defaultDeploymentMode"> 
    <xsl:text>test</xsl:text> 
</xsl:variable> 
<xsl:param name="deploymentMode" select="$defaultDeploymentMode"></xsl:param> 



<xsl:template match="/"> 
    <data><xsl:value-of select="$deploymentMode"/> 
      </data> 
    </xsl:template> 
+1

는 또한 선택에 직접 기본값을 지정할 수 있습니다 :'' –

3

어떻게 XSLT 파일에 입력 매개 변수를 제공하기 위해? XSLT에

임의글로벌파라미터 (XSLT 스타일 시트의 상단 요소의 자식 xsl:param) 은 그 값이 변화의 개시제에 의해, 외부로부터 특정 할 수있다.

이 외부 매개 변수 설정은 구현에 따라 다르며 하나의 XSLT 프로세서마다 다릅니다. 사용중인 특정 XSLT 프로세서의 설명서를 읽으십시오.

여기 작은 예이다 : 여기

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:param name="pDeletePos" select="3"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="num"> 
    <xsl:if test="not(position() = $pDeletePos)"> 
    <xsl:copy-of select="."/> 
    </xsl:if> 
</xsl:template> 
</xsl:stylesheet> 

, 삭제 pDeletePosnum되어야하는 요소의 위치라는 전역 변수.

default value (3)도이 매개 변수에 지정되어 있습니다. 변환의 개시자가 pDeletePos 매개 변수를 지정하지 않은 경우이 값이 사용됩니다.

상기 변환이 XML 문서에인가되는 경우 :

<nums> 
    <num>01</num> 
    <num>02</num> 
    <num>03</num> 
    <num>04</num> 
    <num>06</num> 
    <num>07</num> 
    <num>08</num> 
    <num>09</num> 
    <num>10</num> 
</nums> 
:
<nums> 
    <num>01</num> 
    <num>02</num> 
    <num>03</num> 
    <num>04</num> 
    <num>05</num> 
    <num>06</num> 
    <num>07</num> 
    <num>08</num> 
    <num>09</num> 
    <num>10</num> 
</nums> 

pDeletePos의 값이 외부 5로 지정되는 경우, 변환은 다음과 같은 결과를 생성

외부에서 매개 변수를 설정하는 방법은 XslCompiledTransform XSLT 프로세서를 시작할 때 C#에서 다음을 수행하는 방법입니다.

http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspx

+0

좋은 대답은 을. 그것은 외부 적으로 XSLT 파일에 매개 변수를 지정하는 방법에 대한 내 문제를 해결하는 데 도움이되었습니다. – Anuj

관련 문제