3

我正在尝试编写一个 xslt 代码,它将检查描述元素是否存在,如果它存在,那么它将显示描述元素,但如果它不存在,那么它不应该显示描述元素。但是我下面的代码仍然显示元素尽管它没有任何价值。我们如何对其进行编码,以便在没有服务描述的情况下不会显示描述元素。

  <?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


   <xsl:template match="Service">
     <xsl:element name="equipment">
      <xsl:if test="description !='' ">
          <xsl:value-of select="description" />
      </xsl:if>
      <xsl:if test="not(description)">
      </xsl:if>
     </xsl:element>
    </xsl:template>
   </xsl:stylesheet>

因为有一个空的设备元素被返回。我希望它只返回前 2 个不为空的设备元素。

4

3 回答 3

1

更新的解决方案如下;请检查

  <xsl:template match="Services">
    <xsl:for-each select="Service">
      <xsl:if test="count(description) &gt; 0 and description!=''">
        <equipment>
          <xsl:value-of select="description"/>
        </equipment>
      </xsl:if>
    </xsl:for-each>

  </xsl:template>


</xsl:stylesheet>
于 2012-10-24T10:54:16.433 回答
0

这对你有用吗?

<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- place <result /> as root to produce wellformed XML -->
<xsl:template match="/">
  <result><xsl:apply-templates /></result>
</xsl:template>

<!-- rewrite those <Service /> that have a <description /> -->
<xsl:template match="Service[./description]">
  <equipment><xsl:value-of select="description" /></equipment>
</xsl:template>

<!-- remove those who do not -->
<xsl:template match="Service[not(./description)]" />
</xsl:transform>
于 2012-10-24T11:22:02.413 回答
0
     <xsl:template match="/">
  <xsl:apply-templates select="//Service"/>
  </xsl:template>
<xsl:template match="Service">
      <xsl:if test="description !='' ">
           <xsl:element name="equipment">
          <xsl:value-of select="description" />
     </xsl:element>
      </xsl:if>
    </xsl:template>

或者

 <xsl:template match="/">
  <xsl:apply-templates select="//Service"/>
  </xsl:template>
   <xsl:template match="Service">
      <xsl:if test="child::description[text()]">
       <xsl:element name="equipment">
          <xsl:value-of select="description" />
            </xsl:element>
      </xsl:if>
    </xsl:template>
于 2012-10-24T11:54:44.583 回答