XSL根据元素值添加属性值

时间:2017-01-30 17:54:07

标签: xml xslt

我有以下XML数据

<RESULT>
  <ROW>
    <TAGA>1</TAGA>
    <TAGB>01-01-2001</TAGB>
  </ROW>
  <ROW>
    <TAGA>2</TAGA>
    <TAGB></TAGB>
  </ROW>
</RESULT>

需要输出

<RESULT>
  <ROW>
    <TAGA TAGB_DATE="TRUE">1</TAGA>
    <TAGB>01-01-2001</TAGB>
  </ROW>
  <ROW>
    <TAGA TAGB_DATE="FALSE">2</TAGA>
    <TAGB></TAGB>
  </ROW>
</RESULT>

我对实际问题和数据进行了简化和混淆,以使其变得简单。

如何编写XSLT?我已设法在TAGA日期中获取值为TAGB_DATE的属性。但是,对于2个不同的记录,该值不会改变。我试图使用选择......哪个有效。但是每个部分都是我正在努力的部分。

我是XSLT世界的新手。

1 个答案:

答案 0 :(得分:0)

enter image description here开始,添加模板以匹配TAGA,使用新属性输出TAGB,然后测试<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="TAGA"> <xsl:copy> <xsl:attribute name="TAGB_DATE"> <xsl:choose> <xsl:when test="normalize-space(../TAGB)">TRUE</xsl:when> <xsl:otherwise>FALSE</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 以查看是否有其他任何文字空格。

{{1}}