新手:XSLT转换以验证XML文档中的规则
发布时间:2020-12-16 23:20:00 所属栏目:百科 来源:网络整理
导读:我是XSLT的新手. 我有一个 XML文档,我需要提出xslt来验证XML文档中的某些规则. XML和xsl文件将在xsltproc工具中使用,输出将是简单的Pass或Fail. 示例XML: … Manager mincount="4" grade="10"... Employee id="1" grade="9" .... / Employee id="2" grade="
我是XSLT的新手.
我有一个 XML文档,我需要提出xslt来验证XML文档中的某些规则. XML和xsl文件将在xsltproc工具中使用,输出将是简单的Pass或Fail. 示例XML: … <Manager mincount="4" grade="10"...> <Employee id="1" grade="9" .... /> <Employee id="2" grade="8" .... /> ..... </Manager> > Manager下的子项数(本例中为Employee)必须等于或大于mincount属性的值. 感谢您的帮助! 解决方法
这是一个提供通过/失败的XSLT 1.0选项. “失败”中还有其他详细信息,但可以删除.它还将消息输出到stdout和stderr并终止处理.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/Manager"> <xsl:if test="not(count(Employee) >= @mincount)"> <xsl:variable name="vMessage" select="concat('Fail - Number of Employees (',count(Employee),') is not >= to @mincount (',@mincount,').')"/> <!--stdout--> <xsl:value-of select="$vMessage" disable-output-escaping="yes"/> <!--stderr--> <xsl:message terminate="yes"><xsl:value-of select="$vMessage"/></xsl:message> </xsl:if> <xsl:if test="Employee/@grade >= @grade"> <xsl:variable name="vMessage" select="concat('Fail - Employee (id ',Employee[@grade >= ancestor::Manager/@grade][1]/@id,') has a grade (',Employee[@grade >= ancestor::Manager/@grade][1]/@grade,') that is higher than the Manager grade (',@grade,').')"/> <!--stdout--> <xsl:value-of select="$vMessage" disable-output-escaping="yes"/> <!--stderr--> <xsl:message terminate="yes"><xsl:value-of select="$vMessage"/></xsl:message> </xsl:if> <xsl:text>Pass</xsl:text> </xsl:template> </xsl:stylesheet> 以下是一些XML /输出示例: <Manager mincount="1" grade="7" id="28"> <Employee id="6" grade="5"/> <Employee id="7" grade="1"/> <Employee id="8" grade="2"/> <Employee id="3" grade="7"/> </Manager> Fail - Employee (id 3) has a grade (7) that is higher than the Manager grade (7). <Manager mincount="1" grade="7" id="28"> <Employee id="6" grade="5"/> <Employee id="7" grade="1"/> <Employee id="8" grade="2"/> <Employee id="3" grade="6"/> </Manager> Pass <Manager mincount="10" grade="7" id="28"> <Employee id="6" grade="5"/> <Employee id="7" grade="1"/> <Employee id="8" grade="2"/> <Employee id="3" grade="6"/> </Manager> Fail - Number of Employees (4) is not >= to @mincount (10). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |