XSLT-1.0:仅当元素为空时才删除该元素 [英] XSLT-1.0: remove element only if it is empty
本文介绍了XSLT-1.0:仅当元素为空时才删除该元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
需要帮助!我只是从XSLT开始,并不知道在我的例子中如何进行转换 事先感谢
源XML
<?xml version="1.0" encoding="UTF-8"?>
<body xmlns:httpsca="http://www.ibm.com/xmlns/prod/websphere/http/sca/6.1.0" ...>
<tns:getRealEstateObjects>
<RequestElement>
<IdNumnet>30361100000000000034</IdNumnet>
<IdSelectFromDate></IdSelectFromDate>
</RequestElement>
</tns:getRealEstateObjects>
</body>
目标XML
<?xml version="1.0" encoding="UTF-8"?>
<result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sa="http://www.ibm.com/xmlns/prod/websphere/j2ca/sap">
<IdNumnet>30361100000000000034</IdNumnet>
</result>
生成了我应该编辑的XSLT
<xsl:output method="xml" encoding="UTF-8" indent="yes" xalan:indent-amount="2"/>
<xsl:strip-space elements="*"/>
<!-- The rule represents a custom mapping: "IdSelectFromDate" to "IdSelectFromDate". -->
<xsl:template name="IdSelectFromDateToIdSelectFromDate">
<xsl:param name="IdSelectFromDate"/>
<!-- ADD CUSTOM CODE HERE. -->
</xsl:template>
</xsl:stylesheet>
推荐答案
我不知道此主题是否仍处于活动状态,但您可以尝试关注
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sa="http://www.ibm.com/xmlns/prod/websphere/j2ca/sap">
<xsl:apply-templates select="body/getRealEstateObjects/RequestElement" />
</result>
</xsl:template>
<xsl:template match="body/getRealEstateObjects/RequestElement">
<xsl:copy-of select="IdNumnet" />
<xsl:call-template name="IdSelectFromDateToIdSelectFromDate">
<xsl:with-param name="IdSelectFromDate" select="IdSelectFromDate" />
</xsl:call-template>
</xsl:template>
<!-- The rule represents a custom mapping: "IdSelectFromDate" to "IdSelectFromDate". -->
<xsl:template name="IdSelectFromDateToIdSelectFromDate">
<xsl:param name="IdSelectFromDate"/>
<xsl:choose>
<xsl:when test="normalize-space($IdSelectFromDate) = ''">
<xsl:comment>IdSelectFromDate is empty - do nothing</xsl:comment>
</xsl:when>
<xsl:otherwise>
<!-- Do something with IdSelectFromDate -->
<xsl:copy-of select="$IdSelectFromDate" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
我只是做了一些简化,不再纠结于命名空间等问题,但原则应该保留。
这篇关于XSLT-1.0:仅当元素为空时才删除该元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文