我有以下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世界的新手。
答案 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}}