2016-06-28 3 views
0

XSLT를 처음 사용합니다.
다음과 같은 소스 XSLT가 있습니다.XSLT의 값을 기반으로 요소 만들기

<?xml version="1.0" encoding="UTF-8"?> 
    <root> 
     <child-value>3</child-value> 
    </root> 

내 목표는 <pass> 태그의 수는 child-value 태그의 값을 기반으로해야 하나

<?xml version="1.0" encoding="UTF-8"?> 
<pass_details> 
    <pass id ='p1'>1</pass> 
    <pass id ='p2'>2</pass> 
    <pass id ='p3'>3</pass> 
</pass_details> 

아래 뭔가를해야합니까? xslt를 도와 줄 수 있습니까? 당신은 XSLT 1.0로 제한하는 경우

+0

곳이 [XQuery를 태그] 관련이? _relevant_ 태그로 제한하십시오. –

답변

4

, 당신은 재귀 템플릿이 pass 요소를 생성하기 위해 전화를해야합니다 : 결국 :

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="/root"> 
    <pass_details> 
     <xsl:call-template name="gen"> 
      <xsl:with-param name="n" select="child-value"/> 
     </xsl:call-template> 
    </pass_details> 
</xsl:template> 

<xsl:template name="gen"> 
    <xsl:param name="n"/> 
    <xsl:if test="$n > 0"> 
     <xsl:call-template name="gen"> 
      <xsl:with-param name="n" select="$n - 1"/> 
     </xsl:call-template> 
     <pass id="p{$n}"> 
      <xsl:value-of select="$n"/> 
     </pass> 
    </xsl:if> 
</xsl:template> 

</xsl:stylesheet> 
+0

Thanks @ michael.hor257k. 이 wrks. 한 가지 더 의심스러운 점은 문자열을 xsd로 변환 할 수있는 방법이 있습니까? date sourceXML : 2016-07-08T02 : 05 : 58.058Z targetXML은 2016-07-08 + 05 : 58이어야합니다. 소스에서 이것은 string이며, 목표는 이것을 xsd : date로 기대합니다. 어떤 제안. –

+0

나는 그것이있을 것이라고 확신하지만, 이것을 새로운 질문으로 올리시기 바랍니다. –

+0

위의 xsl 실행에 의문이 있습니다. executon은 어떻게 발생합니까? : 전화 템플릿> <패스 ID ="P {$ 않음} "> 먼저 호출되거나 전달 태그가 실행되면 템플릿이 호출됩니다. xslt에 대한 자습서를 제안하십시오. thanks –

관련 문제