使用 XSLT 检查 XML 文档是否为空(即根没有子节点)
Check if XML document is empty (that the root has no child nodes) using XSLT
我有一份 XML 文件。在这种情况下,它是空的:
<Converting/>
我想在 XML 文档为空时抛出异常,并且我使用的是 XSLT-1.0。我想像
<xsl:template match="root[not(*)]"/>
但是,这对我来说似乎行不通。有什么想法吗?
亲切的问候
编辑:我想在模板中创建它,所以我不能使用模板
写一个匹配根元素的模板,然后在这个模板中计数子节点。如果计数为 0,则将文本写入输出或抛出异常。
方法一
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:if test="count(./*) = 0">
<xsl:text>doc is empty</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
方法二
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:if test="count(./*) = 0">
<xsl:message terminate="yes">doc is empty</xsl:message>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
我有一份 XML 文件。在这种情况下,它是空的:
<Converting/>
我想在 XML 文档为空时抛出异常,并且我使用的是 XSLT-1.0。我想像
<xsl:template match="root[not(*)]"/>
但是,这对我来说似乎行不通。有什么想法吗?
亲切的问候
编辑:我想在模板中创建它,所以我不能使用模板
写一个匹配根元素的模板,然后在这个模板中计数子节点。如果计数为 0,则将文本写入输出或抛出异常。
方法一
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:if test="count(./*) = 0">
<xsl:text>doc is empty</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
方法二
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:if test="count(./*) = 0">
<xsl:message terminate="yes">doc is empty</xsl:message>
</xsl:if>
</xsl:template>
</xsl:stylesheet>