xml – 检查节点集是否包含XSLT中的任何值
发布时间:2020-12-16 07:47:53 所属栏目:百科 来源:网络整理
导读:我需要一些XSLT语法的帮助.这是我的场景,我有一个 XML文件,需要转换为 XML文件的不同外观,我有几个部分,如果特定节点集不包含任何值,则不应处理整个部分. 以下是XML的示例: Dates Date VALUE1/VALUE1 VALUE2/VALUE2 VALUE3/VALUE3 VALUE4/VALUE4 VALUE53333
我需要一些XSLT语法的帮助.这是我的场景,我有一个
XML文件,需要转换为
XML文件的不同外观,我有几个部分,如果特定节点集不包含任何值,则不应处理整个部分.
以下是XML的示例: <Dates> <Date> <VALUE1></VALUE1> <VALUE2></VALUE2> <VALUE3></VALUE3> <VALUE4></VALUE4> <VALUE5>3333</VALUE5> </Date> <Date> <VALUE1>AAAA</VALUE1> <VALUE2></VALUE2> <VALUE3>JJJJ</VALUE3> <VALUE4></VALUE4> <VALUE5>12345</VALUE5> </Date> </Dates> screenshot of xml 这是我的XSLT,if语句不能正常工作 <xsl:for-each select="Level1/Level2/Level3"> <xsl:if test="@VALUE1!=''"> <MyDates> <value_1> <xsl:value-of select="VALUE1"/> </value_1> <value_2> <xsl:value-of select="VALUE2"/> </value_2> <value_3> <xsl:value-of select="VALUE3"/> </value_3> <value_4> <xsl:value-of select="VALUE4"/> </value_4> </MyDates> </xsl:if> </xsl:for-each> 所以你可以看到我基本上希望所有节点(VALUE1,VALUE2,VALUE3等)都有值,否则不处理并转到下一节 (如果你看不到XML的想法,我也做了一个屏幕截图)
您正在尝试匹配文档中不存在的名称“Level1”,“Level2”等的xml元素.然后,您正在寻找最后一个元素的VALUE1属性.
我想你想要这样的东西: <xsl:for-each select="Dates"> <MyDates> <xsl:for-each select="Date"> <xsl:if test="not(*[.=''])"> <MyDate> <value_1> <xsl:value-of select="VALUE1"/> </value_1> <value_2> <xsl:value-of select="VALUE2"/> </value_2> <value_3> <xsl:value-of select="VALUE3"/> </value_3> <value_4> <xsl:value-of select="VALUE4"/> </value_4> </MyDate> </xsl:if> </xsl:for-each> </MyDates> </xsl:for-each> 只要相应Date元素中的每个值都不为空,这将添加一个新的MyDate元素. 它的作用是什么 >为每个Dates元素创建一个新的MyDates元素. 您可能还想查看W3Schools XSL和XPath教程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |