java - 增加标签值或添加标签 xSTL

标签 java xml xls

我有 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>

最佳答案

<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>

这就是我所做的,看起来很有效。

关于java - 增加标签值或添加标签 xSTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647507/

相关文章:

python - 使用 xlrd 读取包含中文和/或印地语字符的 Excel xls 文件

java - 返回小数而不是字符串(POI jar)

java - 一个程序中有多种方法

java - 检查 Java 字节码是否包含调试符号

java - 旋转时获取屏幕上矩形角的点

javascript - 是什么原因导致 "The entity name must immediately follow the ' &' in the entity"错误?

java - 使用 SAX 解析 XML 时出现问题

android - 使用 'bind' 和 'app' 命名空间设置自定义属性与 Android DB 之间的区别?

excel - 从 xls 文件中读取值但未正确读取数值

java - 当另一个设备以编程方式连接时禁用特定设备