XSLT:删除具有空特定孙子的节点
XSLT: Remove nodes with empty specific grandchild
我正在尝试使用 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() 进行比较)...没有任何效果。
有什么线索吗?
XSLT 中没有null
。
节点(文本值是一个节点)为空或不存在。
这里是空的
因此,改为检查空值:
<xsl:template match="gmd:date[gmd:CI_Date/gmd:date/gco:DateTime = '']" />
现在如果 gco:DateTime
没有价值,你的 gmd:date
应该消失了。
我正在尝试使用 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() 进行比较)...没有任何效果。
有什么线索吗?
XSLT 中没有null
。
节点(文本值是一个节点)为空或不存在。
这里是空的
因此,改为检查空值:
<xsl:template match="gmd:date[gmd:CI_Date/gmd:date/gco:DateTime = '']" />
现在如果 gco:DateTime
没有价值,你的 gmd:date
应该消失了。