2016-08-25 44 views
0

我期待修改恆等變換跳過元素,其中任何一個屬性是空的,如: 副本<anyElement anyAttr1="a" anyAttr2="b"/> 但不復制<anotherElement anotherAttr1="a" anotherAttr2=""/>XSL 1.0:身份變換跳過元素,其中一個屬性是空的

備註:

  1. 元素是否有孩子並不重要。

  2. 與所有(容器元素)沒有屬性
  3. 元素應該被複制

來源例如XML:

<?xml version="1.0" encoding="utf-8"?> 
<Parameterset> 
    <Type Code=""/> 
    <Inventory Code="250" Index="0"/> 
    <Inventory Code="350" Index=""/> 
</Parameterset> 

轉化例如XML:

<?xml version="1.0" encoding="utf-8"?> 
<Parameterset> 
    <Inventory Code="250" Index="0"/>  
</Parameterset> 

所有我能拿出來是:

<xsl:template match="node()|@*[. != '']"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

,但這隻會刪除空的屬性並仍然複製該元素。

回答

0

使用<xsl:template match="*[@*[. = '']]"/>刪除這些元素或<xsl:template match="*[@*[. = '']]"><xsl:apply-templates></xsl:template>只處理其內容。當然,這些模板與身份轉換模板一起工作。