我正在尝试使用XSLT从XML中删除一些节点。
转换部分如下:
<xsl:template match="gmd:date[gmd:CI_Date/gmd:date/gco:DateTime = null]" />
...并且XML看起来像这样:
<gmd:MD_Metadata ... >
...
<gmd:identificationInfo>
<gmd:MD_DataIdentification>
<gmd:citation>
<gmd:CI_Citation>
...
<gmd:date>
<gmd:CI_Date>
<gmd:date>
<gco:DateTime />
</gmd:date>
...
</gmd:CI_Date>
</gmd:date>
...
</gmd:CI_Citation>
...
</gmd:citation>
</gmd:MD_DataIdentification>
</gmd:identificationInfo>
</gmd:MD_Metadata>
根据我对XSLT的了解(虽然不多),转换应该与空的grand-grandchild匹配。 但事实并非如此。 模板不匹配,转换不执行任何操作。 我已经尝试了各种方法(将其与0,默认日期时间匹配,与text()进行比较)……无济于事。
有任何线索吗?
答案 0 :(得分:1)
XSLT中没有null
。
一个节点(文本值是一个节点)为空或不存在。
这里是空的。
因此,请检查一个空值:
<xsl:template match="gmd:date[gmd:CI_Date/gmd:date/gco:DateTime = '']" />
如果gmd:date
没有价值,那么您的gco:DateTime
应该消失了。