如何使用XSLT检查xml元素值是否为“null”?
问题描述:
我的源XML:如何使用XSLT检查xml元素值是否为“null”?
<PrtiesData>
<newParty userId="1234">
<userData>
<item key="FirstName">Grace</item>
<item key="LastName">null</item>
</userData>
</newParty>
<newParty userId="5678">
<userData>
<item key="FirstName">Naghia</item>
<item key="LastName">null</item>
</userData>
</newParty>
</PrtiesData>
我使用下面XSL变换:
<xsl:element name="parties">
<xsl:for-each select="/PrtiesData/newParty/userData" >
<xsl:variable name="Name" select="concat(../item[@key='FirstName'],'-',../item[@key='LastName'])"/>
<party partyId="{$Name}"/>
</xsl:for-each>
</xsl:element>
使用上述XSL和输入XML其产生的OutputXML:
<Parties>
<party partyId="Grace-null"/>
<party partyId="Naghia-null"/>
</Parties>
如何清除来自partyId的null?此处派对ID是项目元素的名字+姓氏。
答
当您使用XSLT 2.0,您可以使用string-join
代替concat
这里
<xsl:variable name="Name"
select="string-join((item[@key='FirstName'], item[@key='LastName'][. != 'null']), '-')"/>
+0
谢谢你这样一个快速的解决方案..它为我工作 –
*“如何从partyId空” *你没弄清楚你想要什么,而不是。 – Tomalak
应该忽略空值。并预期的输出是: –