2012-11-30 3 views
0

I 가지고 XML 입력 메시지가 재시 XML 및 증분에없는 경우단위 태그 값 또는 추가 태그 xstl

<Message> 
    <Header> 
     <Timestamp>2010-10-04T14:43:12.361-04:00</Timestamp> 
     <Retry>1</Retry> <!-- added --> 
    </Header> 
</Message> 

을 : I가 갖는 XSLT를 통해 통과해야

<Message> 
    <Header> 
     <Timestamp>2010-10-04T14:43:12.361-04:00</Timestamp> 
    </Header> 
</Message> 

값이 1이면 다시 시도하십시오.

<Message> 
    <Header> 
     <Timestamp>2010-10-04T14:43:12.361-04:00</Timestamp> 
     <Retry>2</Retry> <!-- incremented --> 
    </Header> 
</Message> 

도와 주실 수 있습니까? 결석이 증가하려면이 옵션을 풍부하게하는 방법 태그가있는 경우 경우

나는 코드를 추가 값이 :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > 
    <xsl:param name="ename">Retry</xsl:param> 
    <xsl:param name="evalue">1</xsl:param> 
    <xsl:output method="xml" encoding="utf-8"/> 

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

    <xsl:template match="Header"> 
    <xsl:copy> 
     <xsl:apply-templates/> 
      <xsl:if test="not(Retry)"> 
      <xsl:element name="{$ename}"><xsl:value-of select="$evalue"/></xsl:element> 
      </xsl:if> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 
+0

코드에 무엇이 잘못 되었습니까, 아니면 코드에 대해 이해하지 못합니까? 아무도 여기에 당신을 위해 코드를 작성하고 싶어하지 않습니다 .../ – gbtimmon

+0

xsl에 대한 경험이 없습니다, 이전 코드는 이것을 사용하기 위해 필요한 몇 가지 디자인 업데이트 후에 java tranformation을 사용했습니다. transofration의 일부가 문제로 업데이트되었습니다. – user1424119

답변

2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > 
    <xsl:param name="ename">Retry</xsl:param> 
    <xsl:param name="evalue">1</xsl:param> 
    <xsl:output method="xml" encoding="utf-8"/> 

    <xsl:variable name="number" select="//Retry" /> 

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

    <xsl:template match="//Retry" /> 

    <xsl:template match="Header"> 
    <xsl:copy> 
     <xsl:apply-templates/> 
      <xsl:if test="not(Retry)"> 
      <xsl:element name="{$ename}"><xsl:value-of select="$evalue"/></xsl:element> 
      </xsl:if> 
      <xsl:if test="Retry"> 
      <xsl:element name="{$ename}"><xsl:value-of select="$number + 1 "/>     </xsl:element> 
     </xsl:if> 
</xsl:copy> 

이 내가 수행하고 외모 한 것입니다 마치 일하고있는 것처럼.