诱使XSL将具有特定属性的XML元素解释为null或空
这里是Java8,但我不认为这有什么区别,因为我认为这本质上是一个纯粹的XSL问题 我有一些生成以下XML的代码(作为示例): 问题在于,这会转换空类Buzz变体并产生:诱使XSL将具有特定属性的XML元素解释为null或空,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,这里是Java8,但我不认为这有什么区别,因为我认为这本质上是一个纯粹的XSL问题 我有一些生成以下XML的代码(作为示例): 问题在于,这会转换空类Buzz变体并产生: <foobar> <account>10016</account> <logId>2000001347</logId> <FLIMFLAM SEGMENT="1"> <HAPP>003</HAPP> &l
<foobar>
<account>10016</account>
<logId>2000001347</logId>
<FLIMFLAM SEGMENT="1">
<HAPP>003</HAPP>
<SADD/>
</FLIMFLAM>
</foobar>
你知道我该怎么做吗?提前谢谢 如评论中所述:
<xsl:if test="buzz[not(@class='null')]">
当至少有一个
buzz
元素没有class
属性,该属性包含字符串“null”
时,将返回true。我无法确定问题中的输入和输出是什么。
对您有用吗?谢谢@michael.hor257k(+1),为了澄清,第一个
示例是实际的输入XML,最后一个
XML是所需的输出XML。您的上述建议是否适用于以下两种情况:(1)输入XML上的buzz
有一个class
值不是null
;(2)输入XML上的buzz
甚至没有class
属性?再次感谢!我不确定在这些情况下你希望发生什么。为什么不编辑您的问题并明确何时输出FLIMFLAM
块(或何时不输出)。OK@michael.hor257k请查看我的更新。我只想在其class
属性为非空或输入XML中根本没有提供其class
属性时转换buzz
。我建议的应该适用于您。你可以自己测试一下。
<foobar>
<account>10016</account>
<logId>2000001347</logId>
<FLIMFLAM SEGMENT="1">
<HAPP>003</HAPP>
<SADD/>
</FLIMFLAM>
</foobar>
<foobar>
<account>10016</account>
<logId>2000001347</logId>
</foobar>
<xsl:if test="buzz[not(@class='null')]">