首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT-1.0:仅当元素为空时才删除该元素

XSLT-1.0:仅当元素为空时才删除该元素
EN

Stack Overflow用户
提问于 2013-02-27 17:58:24
回答 1查看 259关注 0票数 0

需要帮助!我刚开始学习xslt,在我的例子中,我不知道如何进行这种转换。

源XML

代码语言:javascript
复制
  <?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

代码语言:javascript
复制
<?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,我想要编辑它

代码语言:javascript
复制
  <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>
EN

回答 1

Stack Overflow用户

发布于 2013-07-09 14:17:15

我不知道这个话题是否仍然活跃,但是你可以试着关注

代码语言:javascript
复制
<?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>

我只是做了一些简化,不再纠结于名称空间等问题,但原则应该保持不变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15109093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档