0

xml入力メッセージがあります:

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

次のようにするには、xsltを通過させる必要があります。

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

再試行がxmlに存在しない場合は、再試行値を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>
4

1 に答える 1

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>

これは私がやったことであり、機能しているように見えます。

于 2012-11-30T17:17:20.240 に答える